我正在制作一个应用程序,在该应用程序中,我正在打开相机,在相机上方,我正在从自定义视图画布对象中绘制花卉图片。现在我想拍照我应该怎么做才能用那朵花拍照。
问问题
168 次
1 回答
0
我已经为此使用了这个布局
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/layoutCam">
<FrameLayout
android:id="@+id/preview"
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</FrameLayout>
<ImageView
android:id="@+id/imgHole"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_gravity="center"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:text="Take Snap"
android:id="@+id/btnTakeSnap"/>
</FrameLayout>
和java代码是
public void onClick(View v)
{
preview.camera.takePicture(shutterCallback, rawCallback, postViewCallback, jpegCallback);
chal();
}
private boolean chal()
{
buttonTakeSnap.setVisibility(View.INVISIBLE);
View v1 = camView.getChildAt(1);
v1.setDrawingCacheEnabled(true);
v1.buildDrawingCache();
bmp = v1.getDrawingCache();
v1.setDrawingCacheEnabled(true);
buttonTakeSnap.setVisibility(View.VISIBLE);
Toast.makeText(this, "Akhtitaam", Toast.LENGTH_SHORT).show();
return true;
}
使用此代码,我从 chal() 获得了两个位图;方法和第二个来自 jpegCallBack(); 方法现在您可以将这些位图放在同一布局上以重叠并捕获该视图
使用此代码
使用此方法捕获视图
public static Bitmap loadBitmapFromView(View v)
{
Paint drawPaint = new Paint(Paint.FILTER_BITMAP_FLAG);
drawPaint.setAntiAlias(false);
drawPaint.setFilterBitmap(false);
Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
c.drawBitmap(b, 0, 0, drawPaint);
v.draw(c);
return b;
}
将相机的表面视图作为这样的参数传递
View view=(YourParentLayout) findViewById(R.id.YourParentLayout);
loadBitmapFromView(view);
于 2013-07-11T05:29:19.893 回答