2014-01-30 62 views
1

我正在用ActionBar選項卡和ViewPager編寫應用程序。我有兩個標籤和兩個頁面。第一頁是Fragmet,第二頁是ListFragment。Android- BitmapFactory.decodeFile使我的應用程序緩慢

在第一頁我正在反轉有關開發平臺,如姓名,水之間的時間間隔,照片等,我可以添加默認照片(從資源),並採取植物的照片infromations。然後,我用兩種方式將照片的數據保存在數據庫中:從資源中獲取圖像的ID或保存照片的路徑。

在第二頁(ListFragment)是ListView的自定義適配器和存在的問題。 列表的一行包含兩個TextView,CheckBox和ImageView。

在我的自定義接口的方法getView每一行工作正常,但解碼文件,位圖所花的時間很多,這讓我的應用程序alowly,甚至所有照片解碼之後。

這是我的代碼來設置每個列表行的圖像:

private void setUpImage(int position, ImageView photo) 
    { 
     if(plants.get(position).getPhoto().contains("jpg")) 
     { 
      BitmapFactory.Options options = new BitmapFactory.Options(); 

      options.inSampleSize = 10; 

      Bitmap bitmap = BitmapFactory.decodeFile(plants.get(position).getPhoto(), options); 

      photo.setImageBitmap(bitmap); 
     } 
     else 
     { 
      photo.setImageResource(Integer.parseInt(plants.get(position).getPhoto())); 
     } 
    } 

不要任何人知道如何提高解碼的速度和塞汀形象在我的ListView的每個列表行?

回答

2

首先!設置options.inSampleSize = 10;要大得多。通常情況下,inSampleSize提供的功率爲2.並將其設置爲等於2或4即可。

可以解碼在後臺線程文件,或者你可以使用延遲加載技術。

你可以延遲加載代碼here。請參閱this的答案。

+0

好吧,我用線程處理器,我解碼每個文件,謝謝。我還有一個問題。在第一頁中,當我點擊EditText並且需要一個焦點時,似乎將一些文本寫入該EditText的鍵盤佔據了第一頁的layuot空間。當鍵盤消失時,佈局佔用所有可用空間。我可以對該鍵盤做些什麼,當它出現時不會佔用任何空間嗎? – user2511941

+0

好吧!我還沒有遇到這樣的要求!但是你可以看到Android文檔。 http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft –