如何在绘制(手指绘画)后将LinearLayout保存为图像

时间:2014-04-25 12:13:01

标签: android android-drawable

我是android的新手,并创建了一个小应用程序,我想从图库中获取图像,然后在绘制之后(使用手指画)保存它。

我遇到的问题是在绘图之后,当我尝试保存图像时,它只保存带有黑色背景的绘图。从库中拍摄的图像在保存的图像中不可见。

绘制图像并保存后

保存实际图片

enter image description here

布局

<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();
   }
你可以告诉我,我在这里错过了什么。为什么我的图像以黑色背景保存?

1 个答案:

答案 0 :(得分:9)

拍摄根布局的屏幕截图并将其转换为位图图像并保存如下:

 LinearLayout v = (LinearLayout) findViewById(R.id.root_layout); 

    v.setDrawingCacheEnabled(true);

    v.buildDrawingCache(true);

    saveBm = Bitmap.createBitmap(v.getDrawingCache());

    v.setDrawingCacheEnabled(false);

将此位图图像保存到您想要的位置。