我正在制作一个应用程序,我正在打开相机,在相机上方,我正在从自定义视图画布对象中绘制花卉图片。现在我想拍照,我应该怎么做用那朵花拍相机的照片。
答案 0 :(得分: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);