0

다음 성능 문제가 있습니다. 안드로이드 타블렛 앱을 개발 중이며 갤러리와 같은 gridview가 있습니다. 각 항목에는 약 3 개의 텍스트보기 (짧은 텍스트)와 2 개의 이미지보기 (배경에 대해 1 개 및 중요한 항목에 대해 작은 아이콘 1 개)가 있습니다. 대상 장치 해상도가 상당히 (1920x800) 그리드 매트릭스가 6 x 5 아이템입니다.안드로이드 이미지 그리드 스크롤 문제

스크롤링 경험이 좋지 않지만 구현했습니다. 언제든지 천천히 스크롤하면 6 개의 항목으로 이루어진 새로운 줄이 나타나야 잠시 멈출 수 있습니다. 그러면 줄이 나타나고 나타나는 줄의 끝 부분에 도달 할 때까지 스크롤을 끝내고 새 줄을 다시 표시해야합니다. 이전에 표시되었던 줄로 다시 스크롤 할 때와 동일한 동작입니다. 아무도 원활하게 스크롤하는 데 도움이 될 수있는 최적화 팁을주지 못했습니다.

내 어댑터에서 홀더 클래스로 최적화 기능을 사용하고 getView 메서드에서 getTag()를 사용하고 있습니다. 이미지는 웹에서로드되는 것이 아니라 setImageURI 메소드에 의해 sd 카드에서로드됩니다.

어쨌든 여기서 문제가 발생할 것으로 예상됩니다. 라인을로드 -이 방법으로 6 배경 이미지는 시간이 좀 걸릴해야하지만 어떻게 해결 방법을 모르겠다. bg 이미지의 평균 크기는 50KB입니다. 여기 내 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 메소드가 호출되기 전에 표시 항목이나 이미지가 아닌 프리 페치를 할 수있는 가능성이 있습니까? 아니면 도움이 될만한 것이 있습니까?

대단히 감사합니다.

답변