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 是对抽屉布局的弱引用,它是我的根视图。
这是我试过的方法:
- 添加测量和布局调用(尽管不需要,因为当按下按钮时此代码 运行s,因此视图应该已经布局)。
- 在调用 setDrawingCacheEnabled(true) 之前将图层类型设置为 LAYER_TYPE_NONE
- 使用不同的视图作为根视图(例如,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
关于这个主题,我几乎每本 post 都读过,但其中 none 似乎有所帮助。
我正在尝试捕获当前屏幕的屏幕截图。为此,我正在使用 getDrawingCache。这是我的代码:
mRootView.get().setDrawingCacheEnabled(true);
mRootView.get().buildDrawingCache();
Bitmap screenShot = Bitmap.createBitmap(mRootView.get().getDrawingCache());
mRootView.get().setDrawingCacheEnabled(false);
生成的位图始终为黑色。
mRootView 是对抽屉布局的弱引用,它是我的根视图。
这是我试过的方法:
- 添加测量和布局调用(尽管不需要,因为当按下按钮时此代码 运行s,因此视图应该已经布局)。
- 在调用 setDrawingCacheEnabled(true) 之前将图层类型设置为 LAYER_TYPE_NONE
- 使用不同的视图作为根视图(例如,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