我尝试使用 setDrawingCacheEnabled
和 getDrawingCache
进行的所有操作均无效。系统正在制作图像,但它看起来只是黑色。
SO 上的其他人似乎也有类似的问题,但答案似乎太复杂或与我的情况无关。以下是我看过的一些内容:
- Save view like bitmap, I only get black screen
- Screenshot shows black
- getDrawingCache always returns the same Bitmap
- Convert view to bitmap on Android
- bitmap is not saving properly only black image
- Custom view converting to bitmap returning black image
这是我的代码:
view.setDrawingCacheEnabled(true);
Bitmap bitmap = view.getDrawingCache();
try {
FileOutputStream stream = new FileOutputStream(getApplicationContext().getCacheDir() + "/image.jpg");
bitmap.compress(CompressFormat.JPEG, 80, stream);
stream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
view.setDrawingCacheEnabled(false);
我在下面分享我的答案,以防其他人犯与我相同的错误。
最佳答案
我的问题是我的 view
是 TextView
。 TextView
上的文本是黑色的(自然),而在应用程序中背景看起来是白色的。然而,我后来记忆起读到, View 的背景默认情况下是透明的,因此下面的任何颜色都可以透过。
所以我将 android:background="@color/white"
添加到 View 的布局 xml 中,它起作用了。在我查看黑色背景上的黑色文本之前,我一直在查看图像。
请参阅@BraisGabin 的回答,了解不需要 overdraw UI 的替代方法。
关于android - 使用 getDrawingCache 保存 View 位图会产生黑色图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25375325/