Android 如何使view.getDrawingCache()保持透明度

Android 如何使view.getDrawingCache()保持透明度,android,Android,如果我有一个背景透明的视图,并且我做了bitmap=view.getDrawingCache()

如果我有一个背景透明的视图,并且我做了
bitmap=view.getDrawingCache()
我甚至试过

view.setDrawingCacheBackgroundColor(Color.TRANSPARENT)

没有成功

实际上,此方法允许在不支持任何alpha的情况下设置背景色,
color.TRANSPARENT
0x00000000
如果您不关心alpha部分,它实际上是黑色的。。。 如果我使用
Color.RED
,背景确实是非常红的

有什么办法让这一切顺利吗?这是当前Android API的限制吗?我可以改用draw()吗?但是这个
view.getDrawingCache()
我想(没有缓存)的性能要差一些


多谢了,Draw缓存在某种程度上是硬件加速之前的Android的遗物,所以有些东西可能有点混乱/没有很好的文档记录

只要不显示
视图#setDrawingCacheBackgroundColor(int)
,透明度就可以正常工作,因为这可能会导致缓存下降到16位颜色空间(请参阅)

此代码

view.setDrawingCacheEnabled(true);
// wait for first layout
...
Bitmap b = view.getDrawingCache();

应该给你一个带有透明背景的ARGB_8888位图。(您也可以在Android Studio调试器中通过在get调用后设置断点并在变量上“查看位图”来执行此操作。

在XML文件中设置布局背景色透明后尝试此代码

            layout.setDrawingCacheEnabled(true);
            Bitmap bmp = layout.getDrawingCache();
            File mFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "smiley1.png");
            FileOutputStream outStream;
            outStream = new FileOutputStream(mFile);
            bmp.compress(Bitmap.CompressFormat.PNG, 100, outStream);

我还通过调用
getDrawingCache()
方法获得了黑色背景的图像。实际上,图像的背景是透明的。错误是将图像保存为jpeg格式,因此gallery应用程序以黑色显示透明像素


如果你把它作为一个覆盖,它会工作得很好。这里没有问题。

你找到解决方案了吗?我也有同样的问题