Android - getDrawingCache - 黑屏

Android - getDrawingCache - black screen

关于这个主题,我几乎每本 post 都读过,但其中 none 似乎有所帮助。

我正在尝试捕获当前屏幕的屏幕截图。为此,我正在使用 getDrawingCache。这是我的代码:

mRootView.get().setDrawingCacheEnabled(true);
mRootView.get().buildDrawingCache();
Bitmap screenShot = Bitmap.createBitmap(mRootView.get().getDrawingCache());
mRootView.get().setDrawingCacheEnabled(false);

生成的位图始终为黑色。

mRootView 是对抽屉布局的弱引用,它是我的根视图。

这是我试过的方法:

  1. 添加测量和布局调用(尽管不需要,因为当按下按钮时此代码 运行s,因此视图应该已经布局)。
  2. 在调用 setDrawingCacheEnabled(true) 之前将图层类型设置为 LAYER_TYPE_NONE
  3. 使用不同的视图作为根视图(例如,DrawerLayout 中的 ViewPager)。

似乎没有任何效果,我 运行 没有想法。

您可以将视图画到canvas-

将您的主要布局引用传递给此方法-

 Bitmap file = save(layout);

 Bitmap save(View v)
   {
    Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(b);
    v.draw(c);
    return b;
   }

如果上述解决方案不起作用,请遵循此 link 可能会有帮助 convert view to bitmap