다음 성능 문제가 있습니다. 안드로이드 타블렛 앱을 개발 중이며 갤러리와 같은 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 메소드가 호출되기 전에 표시 항목이나 이미지가 아닌 프리 페치를 할 수있는 가능성이 있습니까? 아니면 도움이 될만한 것이 있습니까?
대단히 감사합니다.