在android中获取Bitmap null

时间:2013-01-11 05:35:01

标签: android bitmap

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

我的xml是

details.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。有人建议我如何在位图中转换该布局并将这些值设置为位图?

2 个答案:

答案 0 :(得分:1)

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

view.destroyDrawingCache();

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

view.measure(100, 100);
view.layout(0, 0, 100, 100);
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap b = Bitmap.createBitmap(view.getDrawingCache());

答案 1 :(得分:0)

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

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

另一个问题可能是:您在拍摄位图时未绘制视图。尝试使用按钮onclick功能执行相同的操作。