Android - getDrawingCache - 黑屏

时间:2015-01-22 16:30:08

标签: android bitmap screenshot drawingcache

我已经阅读了很多关于这个主题的帖子,但它们似乎都没有帮助。

我试图捕捉当前屏幕的屏幕截图。为此,我使用了getDrawingCache。这是我的代码:

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

生成的位图始终为黑色。

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

以下是我尝试的内容:

  1. 添加一个度量和布局调用(虽然不需要这样做,因为当按下按钮时此代码运行,因此应该已经布置了视图)。
  2. 在调用setDrawingCacheEnabled(true)之前将图层类型设置为LAYER_TYPE_NONE
  3. 使用不同的视图作为根视图(例如,DrawerLayout中的ViewPager)。
  4. 似乎没有任何效果,而且我已经没有想法了。

2 个答案:

答案 0 :(得分:0)

您可以将视图绘制到画布 -

将您的主要布局参考传递给此方法 -

 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;
   }

答案 1 :(得分:0)

如果上述解决方案无效,请按照此链接进行操作convert view to bitmap