3

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

我正在尝试捕获当前屏幕的屏幕截图。为此,我使用 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 回答 2

1

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

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

 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;
   }
于 2015-01-22T16:34:12.737 回答
0

如果上述解决方案不起作用,那么只需点击此链接可能会有助于将视图转换为位图

于 2018-02-22T20:26:34.753 回答