2016-02-26 76 views
1

在我的應用程序中,我在運行時生成一堆Bitmaps以顯示在GridView中。生成的位圖僅包含矩形形狀和大約五種不同的顏色。Android:在GridView中放大ImageView的寬度

如果我讓它們變大,它們會很好地縮小,但是我得到OutOfMemoryExceptions。但是,當我將它們縮小時,它們不會按比例縮放以適應列寬。我認爲ImageView不能幫助我,因爲它不知道最後一列。在GridView中將stretchMode設置爲columnWidth並沒有幫助。

將adjustViewBounds設置爲true可以在ImageView幫助下處理大型位圖,但對升級不起作用。

是否可以通過基礎位圖將ImageView縮放到GridView的最大列寬?這將是我的首選解決方案。

如果不是,我可以預先確定GridView的columnWidth以便相應地生成位圖嗎? (我不太喜歡這個解決方案,因爲我懷疑在大屏幕設備上我可能會再次遇到OutOfMemoryExceptions。)

回答

1

您有兩種選擇。

方法1:

使用任何在線圖像壓縮網站優化的圖像。例如https://tinypng.com .TinyPNG使用智能有損壓縮技術來減少PNG文件的文件大小。通過有選擇地減少圖像中的顏色數量,需要更少的字節來存儲數據。效果幾乎看不見,但是它在文件大小上造成了很大的差異!

方法2:

加載使用第三方庫的相似圖片Universal Image LoaderGlide ..這些庫旨在提供圖像加載,緩存和顯示功能強大,靈活和高度可定製的儀器。它提供了很多配置選項,並且可以很好地控制圖像加載和緩存過程。

+0

我**在我的應用程序中生成位圖。他們不會從任何地方加載。 – user1785730

+0

這些庫使用多線程將圖像加載到gridview/listview,所以你不會忍受OutOfMemory異常 –

1

由於您在應用程序中生成了位圖,因此可以使用像畢加索這樣的庫來顯示它們。畢加索將代表您處理內存,您不必擔心OutOfMemory異常。

相關問題