0

我目前正在使用设备壁纸作为我的布局背景。在三星 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);
}
4

1 回答 1

0

你可以使用BitmapFactory.Options,但应该转换BitmapDrawablebyte[]

 //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);
于 2016-01-16T08:19:26.613 回答