android - 使用 getDrawingCache 保存 View 位图会产生黑色图像

标签 android image caching view

我尝试使用 setDrawingCacheEnabledgetDrawingCache 进行的所有操作均无效。系统正在制作图像,但它看起来只是黑色。

SO 上的其他人似乎也有类似的问题,但答案似乎太复杂或与我的情况无关。以下是我看过的一些内容:

这是我的代码:

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

我在下面分享我的答案,以防其他人犯与我相同的错误。

最佳答案

我的问题是我的 viewTextViewTextView 上的文本是黑色的(自然),而在应用程序中背景看起来是白色的。然而,我后来记忆起读到, View 的背景默认情况下是透明的,因此下面的任何颜色都可以透过。

所以我将 android:background="@color/white" 添加到 View 的布局 xml 中,它起作用了。在我查看黑色背景上的黑色文本之前,我一直在查看图像。

请参阅@BraisGabin 的回答,了解不需要 overdraw UI 的替代方法。

关于android - 使用 getDrawingCache 保存 View 位图会产生黑色图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25375325/

相关文章:

android - 从 WebView 加载 Activity - 第一次安装应用程序但之后就不行了?

android - 如何以编程方式获取工具栏背景颜色?

android - TextView 中的分词

jquery - 缩略图到图像交换 onclick

Java:使用透明 JButton 覆盖图像

css - 为标题和图像使用网格,但现在一个图像位于/隐藏另一个图像之上

.net - 是否可以向MemoryCache添加原子操作?

javascript - 即使使用 `Cache-Control: max-age`,浏览器是否继续发送资源请求

php - 数据更改后重置 memcache 关键数据

android - setAudioRoute(int路由)的不同(int路由)值是什么?