0

我有以下性能問題。我正在開發一個android平板電腦應用程序,並有一個像一個畫廊的gridview。每個項目有大約3個文本瀏覽(短文本)和2個圖像瀏覽(1個用於背景,1個用於重要項目的小圖標)。目標設備分辨率相當大(1920x800),因此網格矩陣顯示的是6 x 5項目。Android圖像網格滾動問題

我已經實現了,但滾動體驗不好。當我在任何時候慢慢地滾動6行的新行時,就會出現一個簡短的凍結。然後線將會出現,並且滾動正常,直到到達出現的線的末端並且新的線應該再次出現。滾動回到之前可見的行時,具有相同的行爲。 任何人都可以給我任何優化技巧,可以幫助順利滾動。

在我的適配器中,我使用最優化功能作爲持有者類,並在getView方法中使用getTag()。圖像不是從web加載,而是通過setImageURI方法從sd卡加載。

無論如何,我期待這裏的問題。以這種方式加載一行 - 6個背景圖像需要一些時間,但我不知道如何制定解決方法。 bg圖像的平均大小是50 KB。這是我的getView。

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder; 
    if (convertView == null) { 
     convertView = mInflater.inflate(mItemResId, parent, false); 
     holder = new ViewHolder(); 
     holder.tvName = (TextView) convertView.findViewById(R.id.grid_item_name); 
     holder.tvPref = (TextView) convertView.findViewById(R.id.grid_item_pref); 
     holder.tvCustomText = (TextView) convertView.findViewById(R.id.grid_item_custom); 
     holder.ivBg = (ImageView) convertView.findViewById(R.id.grid_item_bg); 
     holder.ivSmallIcon = (ImageView) convertView.findViewById(R.id.grid_item_icon); 
     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    Product item = getItem(position); 
    holder.tvName.setText(item.getName()); 
    holder.tvPref.setText(item.getPreference()); 
    holder.tvCustomText.setText(item.getCustomText()); 
    if (item.isImportant()) { 
     holder.ivSmallIcon.setVisibility(View.VISIBLE); 
    } else holder.ivSmallIcon.setVisibility(View.GONE); 

    File f = new File(item.getImagePath()); 
    if (f.exists()) { 
     holder.ivBg.setImageURI(Uri.fromFile(f)); 
    } else { 
     holder.ivBg.setImageResource(R.drawable.no_img); 
    } 

    return convertView; 
} 

或者有沒有機會在調用getView方法之前預取不可見的項目或至少是圖像?或其他任何可以幫助的?

非常感謝。

回答