我是android的新手,并创建了一个小应用程序,我想从图库中获取图像,然后在绘制之后(使用手指画)保存它。
我遇到的问题是在绘图之后,当我尝试保存图像时,它只保存带有黑色背景的绘图。从库中拍摄的图像在保存的图像中不可见。
绘制图像并保存后:
保存实际图片:
布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFCCCCCC"
android:orientation="vertical"
tools:context=".ImageActivity" >
<!-- layout for displaying save button -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_gravity="center"
android:orientation="horizontal" >
<ImageButton
android:id="@+id/my_save_btn"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:contentDescription="@string/save"
android:src="@drawable/save" />
</LinearLayout>
<!-- layout that displays image taken from gallery and allows to finger paint-->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:id="@+id/my_view_drawing_pad1"
android:layout_marginBottom="3dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="3dp"
android:layout_weight="1" >
<LinearLayout
android:id="@+id/my_view_drawing_pad"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
</LinearLayout>
</LinearLayout>
</LinearLayout>
ImageActivity.java onClick方法保存图片:
@Override
public void onClick(View view)
{
drawView.setDrawingCacheEnabled(true);
String imgSaved = MediaStore.Images.Media.insertImage(
getContentResolver(), drawView.getDrawingCache(), UUID.randomUUID()
.toString() + ".png", "drawing");
if (imgSaved != null)
{
Toast savedToast = Toast.makeText(getApplicationContext(),
"Drawing saved to Gallery!", Toast.LENGTH_SHORT);
savedToast.show();
} else {
Toast unsavedToast = Toast.makeText(getApplicationContext(),
"Oops! Image could not be saved.", Toast.LENGTH_SHORT);
unsavedToast.show();
}
drawView.destroyDrawingCache();
}
你可以告诉我,我在这里错过了什么。为什么我的图像以黑色背景保存?
答案 0 :(得分:9)
拍摄根布局的屏幕截图并将其转换为位图图像并保存如下:
LinearLayout v = (LinearLayout) findViewById(R.id.root_layout);
v.setDrawingCacheEnabled(true);
v.buildDrawingCache(true);
saveBm = Bitmap.createBitmap(v.getDrawingCache());
v.setDrawingCacheEnabled(false);
将此位图图像保存到您想要的位置。