Android-getDrawingCache-黑屏

Android-getDrawingCache-黑屏,android,bitmap,screenshot,drawingcache,Android,Bitmap,Screenshot,Drawingcache,关于这个话题,我几乎读过每一篇文章,但似乎没有一篇有用 我正在尝试捕获当前屏幕的屏幕快照。为此,我使用getDrawingCache。这是我的密码: mRootView.get().setDrawingCacheEnabled(true); mRootView.get().buildDrawingCache(); Bitmap screenShot = Bitmap.createBitmap(mRootView.get().getDrawingCache()); mRootView.get().

关于这个话题,我几乎读过每一篇文章,但似乎没有一篇有用

我正在尝试捕获当前屏幕的屏幕快照。为此,我使用getDrawingCache。这是我的密码:

mRootView.get().setDrawingCacheEnabled(true);
mRootView.get().buildDrawingCache();
Bitmap screenShot = Bitmap.createBitmap(mRootView.get().getDrawingCache());
mRootView.get().setDrawingCacheEnabled(false);
生成的位图始终为黑色

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

以下是我尝试过的:

  • 添加度量和布局调用(虽然不需要这样做,因为按下按钮时会运行此代码,因此视图应该已经进行了布局)
  • 在调用setDrawingCacheEnabled(true)之前,将图层类型设置为layer_type_NONE
  • 使用不同的视图作为根视图(例如,抽屉布局中的ViewPager)

  • 似乎什么都不管用,我的想法也没有了。

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

    将主布局引用传递到此方法-

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

    如果上述解决方案不起作用,那么只需遵循此链接可能会有所帮助

    Wow,当然!太简单了!我不明白为什么这是我发现的第一篇用如此简单的方式展示如何做到这一点的帖子。非常感谢你!它工作得很好!