如果我有一个透明背景的视图,那么我bitmap = view.getDrawingCache();很遗憾,该位图不再透明.黑背景在背景中设置.
我甚至试过了
view.setDrawingCacheBackgroundColor(Color.TRANSPARENT);
没有成功.
实际上这个方法允许设置背景颜色而没有任何alpha支持,如果你不关心alpha部分,Color.TRANSPARENT它0x00000000实际上是黑色的...如果我使用Color.RED,背景确实非常红.
有什么想法使这项工作?这是当前Android API的限制吗?我可以使用draw()吗?但是view.getDrawingCache()我认为(没有缓存)效果不太好?
谢谢
小智 0
绘制缓存在某种程度上是硬件加速前的 Android 的遗留物,因此有些内容可能有点令人困惑/没有详细记录。
只要您忽略,透明度就应该可以正常工作,因为View#setDrawingCacheBackgroundColor(int)这可能会导致缓存下降到 16 位颜色空间(请参阅View#mDrawingCacheBackgroundColor)。
这段代码
view.setDrawingCacheEnabled(true);
// wait for first layout
...
Bitmap b = view.getDrawingCache();
Run Code Online (Sandbox Code Playgroud)
应该给你一个带有透明背景的 ARGB_8888 位图。(您也可以在 Android Studio 调试器中通过在 get 调用和变量上的“查看位图”之后设置断点来实现此目的。
| 归档时间: |
|
| 查看次数: |
977 次 |
| 最近记录: |