缩小墙纸位图可绘制对象以减少 RAM 使用率



我目前正在使用设备墙纸作为我的布局背景。在三星 S3 中,在某些大约 7 MB 的设备上,位图可绘制对象大小非常大。有没有办法在不消耗更多 RAM 的情况下减少这种情况。我担心低内存设备上的 OOM。

WallpaperManager wallpaperManager = WallpaperManager.getInstance(mContext);
BitmapDrawable bitmapDrawable = (BitmapDrawable) wallpaperManager.getDrawable();
bitmapDrawable.setGravity(Gravity.CENTER_VERTICAL | Gravity.CLIP_VERTICAL);
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) {
                layout.setBackgroundDrawable(bitmapDrawable);
} else {
                layout.setBackground(bitmapDrawable);
}

您可以使用BitmapFactory.Options但应BitmapDrawable转换为byte[]

 //convert BitmapDrawable to byte[]
//winsize is height screen user device 
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeByteArray(imageData, 0, imageData.length, options);
        if (options.outHeight >= (CampainManager.winSize )) {
            int x = (options.outHeight / (winSize ));
            options.inSampleSize = x;
        }
        options.inJustDecodeBounds = false;
        bitmap = BitmapFactory.decodeByteArray(imageData, 0, imageData.length, options);

最新更新