2012-07-07 64 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