Android - getDrawingCache - 黑屏

标签 android bitmap screenshot drawingcache

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

我正在 try catch 当前屏幕的屏幕截图。为此,我正在使用 getDrawingCache。这是我的代码:

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

生成的位图始终为黑色。

mRootView 是对抽屉布局的弱引用,它是我的 Root View 。

这是我尝试过的:

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

似乎什么都行不通,我已经没有想法了。

最佳答案

您可以将 View 绘制到 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;
   }

关于Android - getDrawingCache - 黑屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28093868/

相关文章:

android - 翻译用于绘制位图的矩阵时,它会绘制多个位图

windows - 光标在 bitblt 上消失

Java Calendar 实例递增 DAY_OF_MONTH 作为递减(仅)HOUR 或 MINUTE 的副作用

android - 选择时 Tabhost 图像更改

基于 Canvas 的游戏的 JavaScript 缓冲 : mediocre performance

android - 解码后的位图字节大小?

java - 比较两个屏幕截图无法正常工作-java

node.js - 访问时 puppeteer 的截图是否被捕获?

android - 逆向工程 HTTP 请求

android - 从 Google Play 商店自动安装 .apk