setDrawingCacheQuality 在 Android 中不起作用?
setDrawingCacheQuality doesn't work in Android?
我尝试获取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 的不同参数,但结果是一样的。
如何获得更小的位图?
谢谢
这里的质量不是像写入 JPEG 时那样的压缩质量。它是透明胶片的 alpha 混合质量。所以它确实有效,只是没有按照您的想法行事。
(顺便说一句——内存中的位图是未压缩的,所以无论你使用什么压缩质量将它们写入磁盘——在内存中,如果它们相同,它们占用相同数量的内存尺寸)。
我尝试获取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 的不同参数,但结果是一样的。
如何获得更小的位图?
谢谢
这里的质量不是像写入 JPEG 时那样的压缩质量。它是透明胶片的 alpha 混合质量。所以它确实有效,只是没有按照您的想法行事。
(顺便说一句——内存中的位图是未压缩的,所以无论你使用什么压缩质量将它们写入磁盘——在内存中,如果它们相同,它们占用相同数量的内存尺寸)。