2013-08-01 86 views
0

我的應用程序在2個不同的類(和佈局)中使用29個圖像。在1佈局中,有1個圖像視圖最多在25個圖像之間變化,然後另一個佈局是滾動視圖,其中包含所有圖像,其中一次最多可顯示3或4個圖像。以前,我將圖像保存爲.jpg,每個圖像大小爲720 * 540和大約200-300kb。我的應用程序在使用圖像的2個佈局之間出現內存不足問題;它使用超過100 MB。我對位圖進行了一些研究並嘗試了他們的圖像,但他們沒有什麼幫助,因爲我仍然遇到內存不足問題,他們將.apk大小增加了近3倍。加載圖像的最佳方式是什麼,它是從.jpg還是從位圖或其他方式繪製的?任何建議,將不勝感激。顯示圖像的最有效方式

+0

我有點困惑。爲什麼bidmap增加了apk文件?我們在java代碼中對它們進行解碼,對吧?此鏈接可能對您有所幫助。 http://developer.android.com/training/displaying-bitmaps/manage-memory.html –

+0

位圖文件大得多,位圖文件解壓縮和jpg文件壓縮 – ez4nick

+0

我知道位圖是未壓縮的。但是我們在apk文件中沒有他們,對吧?我們只有在運行應用程序時才使用BitmapFactory來解碼它們。 apk文件只有.jpg而不是位圖 –

回答

2

當位圖在內存中時,它是未壓縮的。原始格式無關緊要。你可以指望每幅圖像的寬度*高度* 4字節的內存。例如,您的每張720x540圖像都需要〜1.5MB的內存。

從何處加載它們並不重要,至少就所需的內存量而言。

現在閱讀,

http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html

+0

好吧,如果我理解正確,鏈接建議緩存所有圖像,只加載當前屏幕上的圖像? – ez4nick

+1

是的,所有的圖像應該來自緩存。最好的做法是在該類中放置一個包裝器,該包裝器從緩存中獲取或從源中加載並插入到緩存中。是的,通常你會有一個使用適配器的視圖。在適配器的「get view」方法中,加載圖像...意思是,它來自緩存或從源代碼加載。 –

+0

好的感謝信息。我肯定經過更多的研究後,我將能夠做到這一點 – ez4nick

0

你可以閱讀系統庫的源代碼,那麼你就可以完全理解如何操作位圖。第一次獲取圖像時,必須解碼原始文件,並將其保存到緩存文件。然後下一次,您只需解碼緩存文件,這會更快。你的記憶力有限。不要期望存儲所有位圖,只需要顯示在屏幕上的位圖即可。縮略圖的大小比完整圖像小得多。所以如果你想在屏幕上放8〜10個縮略圖,就沒有問題了。當用戶單擊縮略圖瀏覽完整圖像時,可以將完整圖像加載到內存中,並回收其他位圖。

相關問題