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