getDrawingCache()始终返回null

时间:2012-01-20 10:05:08

标签: android screenshot

我想使用DrawingCache捕获ImageView的内容。我写了下面的代码。

iv1 = (ImageView)findViewById(R.id.iv1);
iv2 = (ImageView)findViewById(R.id.iv2);            
iv1.setDrawingCacheEnabled(true);
Bitmap myScreenshot = iv1.getDrawingCache();
iv2.setImageBitmap(myScreenshot);

但我只能在屏幕上看到一张图片。后来我才知道 myScreenshot 为空

我看到很多关于同样问题的帖子,但没有适当的解决方案。

我认为我们必须在清单中添加任何权限吗?实现这一目标需要root权限?请帮我解决这个问题。

4 个答案:

答案 0 :(得分:10)

尝试在buildDrawingCache()

之前致电getDrawingCache()

修改 在页面加载后调用getDrawingCache(),而不是onCreate

答案 1 :(得分:2)

在onWindowFocusChanged()中调用getDrawingCache()而不在onCreate()中调用,那么你就不会得到null。

答案 2 :(得分:1)

你不这样做 iv1.buildDrawingCache(true);在之前添加行 Bitmap myScreenshot = iv1.getDrawingCache();

答案 3 :(得分:0)

imageview.setBackgroundResource(R.drawable.imageview);                 

imageview1.setBackgroundResource(R.drawable.imageview1); 

使用这两张图片是screan

 <RelativeLayout
    android:id="@+id/item"               
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ImageView
        android:id="@+id/image"
        android:layout_width="320dp"
        android:layout_height="486dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:background="@drawable/iv1" />

    <ImageView
        android:id="@+id/ic_launcer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:background="@drawable/iv2" />

</RelativeLayout>