2012-01-20 248 views
6

我想通過使用DrawingCache捕獲ImageView的內容。我寫了下面的代碼。getDrawingCache()總是返回null

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

但我在屏幕上只能看到一個圖像。後來我才知道myScreenshot爲空

我看到很多帖子關於同樣的問題,但沒有適當的解決方案。

我想我們必須添加在清單中的任何權限?或實現此目的所需的root權限?請幫我解決這個問題。

回答

10

嘗試調用編輯buildDrawingCache()getDrawingCache()

呼叫getDrawingCache(),頁面之後已加載,而不是onCreate

+0

我加了iv1.buildDrawingCache();在getDrawingCache()之前。沒有使用 –

+0

您是否在應用程序運行時檢查了iv1是否有圖像。還要指定你在哪裏調用你的代碼。你可能會調用它之​​前的意見初始化 – aqs

+0

在xml文件中,我只給了android:src for iv1。我在這裏發佈的代碼是在setContentView(R.layout.main)之後;在onCreate()中是否正確? –

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> 
1

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

+0

您的答案與@aqs – gecco

2

在onWindowFocusChanged()中調用getDrawingCache()而不是在onCreate()中,那麼您將不會獲得null。

+0

所寫的接受答案完全相同,謝謝,它對我有用! –