2

我想将包含图像、文本的布局转换为位图以在我的应用程序中实现 pagecurl 效果..

我的xml是

详细信息.xml

 <?xml version="1.0" encoding="utf-8"?>
  <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background= "#E0FFFF"
    android:gravity="center"
    android:orientation="vertical" >
    <FrameLayout 
       android:id="@+id/framelayout"
       android:layout_marginTop="30dip"
       android:layout_height="fill_parent" 
       android:layout_width="fill_parent">
      <RelativeLayout
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:id="@+id/Rl">
                <TextView
                  android:id="@+id/tvName"
                  android:layout_width="wrap_content"
                  android:layout_height="60dip"
                  android:layout_alignParentTop="true"
                  android:layout_centerHorizontal="true"
                  android:text="BookName"
                  android:textSize="40dip"
                  android:textStyle="bold" />
               <TextView
                  android:id="@+id/tTitle"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_below="@id/tvName"
                  android:text="Page Name"
                  android:textColor="#040404"
                  android:textSize="30dip"
                  android:textStyle="bold"
                  android:typeface="sans" />
              <ImageView
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:layout_alignWithParentIfMissing="false"
                  android:layout_below="@id/tTitle"
                  android:baselineAlignBottom="true"
                  android:scaleType="fitXY"
                  android:src="@drawable/stub"
                  android:id="@+id/smallImage"
                />
          <TextView
               android:id="@+id/tDescription"
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:textSize="15dip"
               android:layout_below="@id/smallImage" />
           <Button
               android:id="@+id/buy_button"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_alignBottom="@+id/tTitle"
               android:layout_alignParentRight="true"
               android:layout_alignParentTop="true"
               android:layout_marginRight="22dp"
               android:text="buy"
               android:visibility="visible"/>
           <Button
               android:id="@+id/bLib"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_alignParentLeft="true"
               android:layout_below="@+id/tDescription"
               android:text="Go to Library"
               android:textSize="20dip"
               android:textStyle="italic" 
              />
               <Button
               android:id="@+id/backD"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_toRightOf="@+id/bLib"
                 android:layout_alignParentRight="true"
                android:layout_below="@id/tDescription"
               android:text="Back to Home" 
               android:textStyle="bold"
               android:textSize="20dip"
               />
    </RelativeLayout>
    </FrameLayout>
    </ScrollView>

我的Java类将此布局转换为位图是

    public void onCreate(Bundle savedInstanceState) 
    {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.details);
      FrameLayout view = (FrameLayout)findViewById(R.id.framelayout);
      view.setDrawingCacheEnabled(true);
      view.buildDrawingCache();
      Bitmap bm = view.getDrawingCache();
      System.err.println("getting bitmap.."+bm);
    }

我没有找到在这里设置布局值的方法..在这里我将位图 bm 值设置为 null。有人可以建议我如何在位图中转换该布局并将这些值设置为位图吗?

4

2 回答 2

1

为了克服这个问题,我在保存位图后销毁了绘图缓存。

view.destroyDrawingCache();

并按照以下代码保存您的位图。

view.measure(100, 100);
view.layout(0, 0, 100, 100);
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap b = Bitmap.createBitmap(view.getDrawingCache());
于 2013-01-11T05:43:35.573 回答
0

在获取位图时检查它是否内存不足。

try   
{....}
catch(OutOfMemoryException ex)
{}

另一个问题可能是:当您使用位图时,您的视图未绘制。尝试使用按钮 onclick 功能来执行相同的过程。

于 2013-01-11T05:48:17.897 回答