2014-03-05 84 views
0

在我的應用程序中,我有一個ImageViews列表。這些ImageView的大小是1024x512。在XML中,這是每個ImageView的是如何定義的:將位圖加載到imageView的正確方法是什麼

<ImageView 
        android:id="@+id/imageView3" 
        android:layout_width="75dp" 
        android:layout_height="75dp" 
        android:layout_centerInParent="true" 
        android:adjustViewBounds="true" 
        android:scaleType="fitXY" 
        android:src="@drawable/pic" /> 

,這是我如何設置每個的ImageView位在getView在ArrayAdapter:

 File picToLoad = new File(localPhotosUrl.get(0)); 
     byte[] array= null; 
     try { 
      array= org.apache.commons.io.FileUtils.readFileToByteArray(picToLoad); 

      System.gc(); 
      Bitmap bitmap = BitmapFactory.decodeByteArray(array, 0, array.length); 
      holder.imgIcon.setImageBitmap(bitmap); 
     } 

現在發現,我是從加載圖像SD卡是1024x512,但ImageView是75x75。這種方式是正確的嗎?意義設置圖像位圖全圖還是內存消耗?我應該在調用setImageBitmap之前將圖像大小調整爲75x75,否則它不會做任何更改?

+0

請閱讀下面的答案,但也不應該調用'System.gc()',這是一個糟糕的做法(除非非常特殊的情況),android處理垃圾收集 –

+0

爲什麼這是不好的做法?如果有的話它會收集一些垃圾early.I也認爲,顯式調用GC並不能確保垃圾將被收集 – Libathos

+0

閱讀[this](https://stackoverflow.com/questions/2414105/why-is-it-a -bad-practice-to-call-system-gc)和[this](http://bugs.java.com/view_bug.do?bug_id=6668279) –

回答

1

閱讀Loading Large Bitmaps Efficiently官方安卓頁面上的文章。這是非常有用的加載位圖

+1

我實際上會說在文檔中去一級 - http://developer.android.com/training/displaying-bitmaps/index.html –

+0

感謝您發佈您的答案!請注意,您應該在此處發佈答案的重要部分,在此網站上,或者您的帖子風險被刪除[請參閱常見問題,其中提到的答案几乎不超過鏈接。](http:// stackoverflow。 com/faq#deletion)如果您願意,您可能仍然包含該鏈接,但僅作爲「參考」。答案應該獨立,不需要鏈接。 – Taryn

+0

好吧,請原諒我的錯誤,它不會再發生:) – Mieszko

相關問題