2016-01-05 55 views
0

我有一個很少的活動,每個活動都有一個圖像作爲背景。如何處理背景中大圖像的活動?

由於每幅圖像都非常大(全高清),它會快速消耗內存,從而導致整個應用程序緩慢甚至由於內存不足異常而崩潰。

你如何處理這樣的事情?

回答

0

嘗試使用導入功能將照片導入到您的開發環境中,例如。以下是使用Android Studio導入圖片資源的方法。右鍵單擊可繪製,選擇新圖像,選擇圖像資源,導入圖像,然後android將創建5個不同的圖像,這些圖像已針對Android設備進行了優化,請務必將圖像名稱命名爲小寫。好運

0

使用圖像按以下比例在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 
2

你爲什麼要加載一個全高清圖像較低的Android設備將無法甚至加載它。並加載一個全高清圖像會吃掉你的整個內存,使應用程序呆滯,因爲你指出。

最好的解決方案將是:

  1. 作物使用近似或擊中和線索方法使用任何設計工具如Photoshop圖像,素描等(推薦hdpi: 480x800 px
  2. 然後不使其有損壓縮圖象。在課堂上使用TinyPNG
  3. 最後在res中創建一個名爲drawable-nodpi的文件夾,如果它尚不存在。並將格式化的圖像放入drawable-nodpi

drawable-nodpi有所有密度的資源。這些是密​​度無關的資源。無論當前屏幕的密度如何,系統都不會縮放使用此限定符標記的資源。

參考:

0

有幾種方法可以做到這一點。

選項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