2016-01-16 48 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(壓縮)。 –