Android:根视图的快照(使用ActionBar)

sle*_*ica 2 android android-activity

我曾经通过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));
Run Code Online (Sandbox Code Playgroud)

现在我正在使用ActionBar,并且它没有嵌套在content视图下,所以它被遗漏了.如何获得真正的根视图?或者以其他方式使用操作栏拍摄照片,如果这不可能的话?

Nic*_*ico 5

要获得包含ActionBar在内的整个窗口的Bitmap,您可以使用DecorView.

  1. 首先,您需要启用绘图缓存

    getWindow().getDecorView().setDrawingCacheEnabled(true);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 得到位图

    Bitmap bmp = getWindow().getDecorView().getDrawingCache();  
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在其他地方使用位图,我尝试使用ImageView并且效果很好.

  4. 禁用绘图缓存

    getWindow().getDecorView().setDrawingCacheEnabled(false);
    
    Run Code Online (Sandbox Code Playgroud)