네,하지만 내가 (스레드 메모리/파일 캐싱 및 없음 스레드 이미지 로딩) DroidFu 매우 유사 이미지 로더, 내 자신의 구현을 사용했다. 그리고 갤러리 + 커서 어댑터 설정으로 스레드로 이미지를로드 할 수없는 것처럼 보입니다. 그렇지 않으면 하나의 연속적인 부드러운 스크롤 대신 매우 고르지 못한 스크롤이 발생합니다.
다음은 샘플 코드입니다. 목록, 갤러리 및 그리드보기에 동일한 커서 어댑터를 사용합니다.
public class CatalogCursorAdapter extends CursorAdapter {
private Context context = null;
private HLBitmapManager iMan;
private CatalogViewHolder holder;
private final LayoutInflater inflater;
private int layout;
public CatalogCursorAdapter(Context context, Cursor c, int layout)
{
super(context, c, true);
inflater = LayoutInflater.from(context);
this.layout = layout;
this.context = context;
iMan = new HLBitmapManager(context.getCacheDir());
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
final View view = inflater.inflate(layout, parent, false);
return view;
}
@Override
public void bindView(View v, Context context, Cursor c) {
String brandName = c.getString(c.getColumnIndex("display_name"));
String category = c.getString(c.getColumnIndex("display_price"));
String imgUrl = c.getString(c.getColumnIndex("img_url"));
holder = (CatalogViewHolder) v.getTag();
if(holder == null) {
holder = new CatalogViewHolder(v);
v.setTag(holder);
}
Bitmap image;
switch (this.layout) {
case R.layout.catalog_list_row:
holder.title.setText(brandName);
holder.sub_title.setText(category);
iMan.fetchBitmapOnThread(imgUrl, Constants.EVENT_LISTVIEW_IMG_WIDTH, Constants.EVENT_LISTVIEW_IMG_HEIGHT, holder.icon);
break;
case R.layout.catalog_grid_cell:
iMan.fetchBitmapOnThread(imgUrl, Constants.EVENT_LISTVIEW_IMG_WIDTH, Constants.EVENT_LISTVIEW_IMG_HEIGHT, holder.icon);
break;
case R.layout.catalog_slide_cell:
image = iMan.fetchBitmap(imgUrl, Constants.EVENT_LISTVIEW_IMG_WIDTH, Constants.EVENT_LISTVIEW_IMG_HEIGHT);
holder.icon.setImageBitmap(image);
break;
}
holder.icon.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
}
}
당신은 "HLBitmapManager" – pengwang
HLBitmapManager 이미지 다운 로더의 내 자신의 구현입니다 걸 알 수 있습니다. 이미지 캐시를 다운로드하고 관리하는 데 도움이되는 정보로 대체 할 수 있습니다. –