2016-01-16 34 views
0

我目前使用设备壁纸作为我的布局背景。在三星S3中,大约7MB的位图可绘制大小非常大。有没有什么办法可以在不消耗更多RAM的情况下减少这种情况我很担心低内存设备上的OOM。收缩壁纸位图drawable以减少内存使用率

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); 
} 

回答

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); 
+0

这降低了图像的高度,我想填补的高度。这对我没有帮助。它导致使用额外的内存7MB(旧)+ 2MB(压缩)。 –