Преобразуване на FrameLayout като растерно изображение

Имам FrameLayout, който се състои от няколко изгледа на изображение и един EditText. Запазвам това оформление като изображение в паметта (външна). Първият път, когато задам изображенията в изображенията, всичко върви добре, т.е. точното изображение се записва (същото като показването на екрана), но когато след запазване за първи път, ако променя нещо (текст, изображение), то се показва правилно на екрана, но в запазено изображение показва по-ранно изображение (първо изображение).

XML на оформлението:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
<FrameLayout 
    android:id="@+id/imageWithoutFrame"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:layout_centerInParent="true" >

    <ImageView
        android:id="@+id/withoutFrame_background"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src="@drawable/background" />

    <ImageView
        android:id="@+id/withoutFrame_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:adjustViewBounds="true"
        android:layout_gravity="center" />

    <EditText 
        android:id="@+id/withoutFrame_editableText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal|bottom"
        android:layout_marginBottom="30dip"
        android:hint="Write here"
        android:maxLength="60" />

</FrameLayout>
</RelativeLayout>

Кодът, който го променя в растерно изображение, е:

Bitmap bm = null;
FrameLayout savedImage = null;
savedImage = (FrameLayout)findViewById(R.id.imageWithoutFrame);
savedImage.setDrawingCacheEnabled(true);
savedImage.buildDrawingCache();
bm = savedImage.getDrawingCache();

Използвах този bm за спестяване.

Благодаря за помощта.


person Anshuman Jaiswal    schedule 10.05.2012    source източник


Отговори (1)


за да преодолея този проблем, унищожавам кеша за чертежи след запазване на изображението.

savedImage.destroyDrawingCache();
person Anshuman Jaiswal    schedule 11.05.2012
comment
Каква е разликата между вашето решение и view.setDrawingCacheEnabled(false); - person Dr.jacky; 29.04.2015