2012-07-07 62 views
2

我曾經採取了content視圖和繪圖它搶購的活動位圖的快照:安卓:根視圖(動作條)

View view = activity.findViewById(android.R.id.content) 

Bitmap bitmap = Bitmap.createBitmap(
    view.getWidth(), view.getHeight(), Config.ARGB_8888 
); 

view.draw(new Canvas(bitmap)); 

現在我使用的是動作條,並且它不是嵌套在content視圖,所以它被遺漏了。我如何才能獲得真實根視圖?或者用其他方式將動作欄中的圖片拍攝下來,如果這不可行?

回答

5

要獲取包括ActionBar在內的整個窗口的位圖,可以使用DecorView。

  1. 首先您需要啓用繪製緩存

    getWindow().getDecorView().setDrawingCacheEnabled(true); 
    
  2. 得到位圖

    Bitmap bmp = getWindow().getDecorView().getDrawingCache(); 
    
  3. 使用位圖的其他地方,我嘗試這一個ImageView的偉大工程。

  4. 禁用繪圖緩存

    getWindow().getDecorView().setDrawingCacheEnabled(false); 
    
+0

問題(S)!啓用繪圖緩存的副作用是什麼?爲什麼默認不啓用?爲什麼你之後沒有關閉它,並保持原樣? – slezica 2012-07-19 20:53:30

+0

示例代碼只是一種獲取屏幕快照的方式,您是對的,您需要處理位圖並在您自己的應用程序中回收它。啓用繪圖緩存我認爲將使用更多的內存的位圖,你應該把它關閉後,你得到的位圖(樣本更新)。 – Nico 2012-07-20 14:24:41

+0

謝謝+ 8個字符! – slezica 2012-07-21 02:58:40