我有一個很少的活動,每個活動都有一個圖像作爲背景。如何處理背景中大圖像的活動?
由於每幅圖像都非常大(全高清),它會快速消耗內存,從而導致整個應用程序緩慢甚至由於內存不足異常而崩潰。
你如何處理這樣的事情?
我有一個很少的活動,每個活動都有一個圖像作爲背景。如何處理背景中大圖像的活動?
由於每幅圖像都非常大(全高清),它會快速消耗內存,從而導致整個應用程序緩慢甚至由於內存不足異常而崩潰。
你如何處理這樣的事情?
嘗試使用導入功能將照片導入到您的開發環境中,例如。以下是使用Android Studio導入圖片資源的方法。右鍵單擊可繪製,選擇新圖像,選擇圖像資源,導入圖像,然後android將創建5個不同的圖像,這些圖像已針對Android設備進行了優化,請務必將圖像名稱命名爲小寫。好運
使用圖像按以下比例在android系統 Check this link for more specification
xxxhdpi: 1280x1920 px
xxhdpi: 960x1600 px
xhdpi: 640x960 px
hdpi: 480x800 px
mdpi: 320x480 px
ldpi: 240x320 px
你爲什麼要加載一個全高清圖像較低的Android設備將無法甚至加載它。並加載一個全高清圖像會吃掉你的整個內存,使應用程序呆滯,因爲你指出。
最好的解決方案將是:
hdpi: 480x800 px
)res
中創建一個名爲drawable-nodpi
的文件夾,如果它尚不存在。並將格式化的圖像放入drawable-nodpi
。drawable-nodpi
有所有密度的資源。這些是密度無關的資源。無論當前屏幕的密度如何,系統都不會縮放使用此限定符標記的資源。
參考:
有幾種方法可以做到這一點。
選項1:
不同的DPI創建不同的完美的圖像,並將它們在相關繪製文件夾。然後2組
android:background="@drawable/your_image
選項:
創建縮放位圖,其中適合您的佈局..
/* adapt the image to the size of the display */
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
Bitmap bmp = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(
getResources(),R.drawable.background),size.x,size.y,true);
BitmapDrawable background = new BitmapDrawable(bmp);
layout.setBackgroundDrawable(background);
方案3:
不需要創建bitmat圖像每次。您可以在第一次創建後將其放入緩存內存中。然後嘗試從緩存中取出,如果沒有找到,則再次將您的可繪製圖像作爲位圖進行處理,並將其放入緩存並使用它。這將是更快的過程..
有一個鏈接更詳細.. Caching Bitmaps