【问题标题】:setDrawingCacheQuality doesn't work in Android?setDrawingCacheQuality 在 Android 中不起作用?
【发布时间】:2017-02-08 07:41:45
【问题描述】:

我尝试获取View的缓存位图,代码如下:

View cachingView = getActivity().getWindow().getDecorView().getRootView();
cachingView.setDrawingCacheEnabled(true);
cachingView.setLayerType(View.LAYER_TYPE_NONE,null);
cachingView.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_LOW);
 Bitmap bitmap = Bitmap.createBitmap(cachingView.getDrawingCache());
LogHelper.i("bitmap size: "+bitmap.getByteCount());
LogHelper.i("bitmap size: "+ BitmapCompat.getAllocationByteCount(bitmap));

打印结果是:

位图大小:14745600

位图大小:14745600

显然,它太大了。我更改了 setDrawingCacheQuality 的不同参数,但结果是一样的。

如何获得更小的位图?

谢谢

【问题讨论】:

  • 任何机构都可能遇到过这个问题,或者有没有其他方法可以得到更小的后台缓存?

标签: android caching bitmap out-of-memory


【解决方案1】:

这里的质量不是像编写 JPEG 时那样的压缩质量。它是透明胶片的 alpha 混合质量。所以它确实有效,只是没有做你认为它做的事情。

(顺便说一句 - 内存中的位图是未压缩的,因此将它们写入磁盘的压缩质量并不重要 - 如果它们的大小相同,它们在内存中占用相同数量的内存) .

【讨论】:

    猜你喜欢
    • 2018-06-18
    • 2021-08-31
    • 2016-02-20
    • 2015-05-25
    • 2011-09-19
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    相关资源
    最近更新 更多