안드로이드 공식 사이트에 포괄적 인 가이드가있다, http://developer.android.com/training/displaying-bitmaps/index.html
그것을 참조하십시오
package com.jafir.project.adapter;
import java.util.List;
import java.util.Map;
import com.jafir.project.porunacabeza.R;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView.RecyclerListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class PicListViewAdapter extends BaseAdapter {
private Context context;
private Resources resources;
private LayoutInflater inflater;
private ViewHolder holder;
private List<Map<String, Object>> list;
public PicListViewAdapter(Context context,List<Map<String, Object>> list) {
this.list = list;
this.context = context;
this.inflater = LayoutInflater.from(context);
resources = context.getResources();
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int arg0) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
convertView = inflater.inflate(R.layout.item_pic, null);
holder = new ViewHolder();
holder.imageView = (ImageView) convertView.findViewById(R.id.img_pic);
holder.textView = (TextView) convertView.findViewById(R.id.txt_pic);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
int resID = (Integer) list.get(position).get("image");
String text = (String) list.get(position).get("text");
holder.imageView.setImageBitmap(decodeBitmap(resources, resID, holder.imageView.getWidth(), holder.imageView.getHeight()));
holder.textView.setText(text);
notifyDataSetChanged();
return convertView;
}
public Bitmap decodeBitmap(Resources res,int id,int width,int height){
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(res,id,options);
options.inSampleSize = getInSampleSize(options,width,height);
options.inJustDecodeBounds = false;
return BitmapFactory.decodeResource(res,id,options);
}
public int getInSampleSize(BitmapFactory.Options options,int reqWidth,int reqHeight){
final int width = options.outWidth;
final int height = options.outHeight;
int inSampleSize = 1;
if(height > reqHeight || width > reqWidth) {
int radioWidth = Math.round((float)width/(float)reqWidth);
int radioHeight = Math.round((float)height/(float)reqHeight);
inSampleSize = radioHeight < radioWidth ?radioHeight:radioWidth;
}
return inSampleSize;
}
final static class ViewHolder{
ImageView imageView;
TextView textView;
}
}
이
활동입니다
세션에는 다음 주제가 포함되어 있습니다.
큰 비트 맵을 효율적으로로드 이 단원에서는 응용 프로그램 메모리 한도를 초과하지 않고 큰 비트 맵을 디코딩하는 과정을 안내합니다. 인터페이스 스레드 비트 맵 처리 오프
비트 맵 처리 메인 UI 스레드에서 발생하지 않아야 (등, 원격 소스로부터 다운로드 리사이징). 이 단원에서는 AsyncTask를 사용하여 백그라운드 스레드의 비트 맵을 처리하고 동시성 문제를 처리하는 방법을 설명합니다.
캐싱 비트 맵 이 단원에서는 여러 비트 맵을로드 할 때 당신의 UI의 응답 성 및 유동성을 개선하기 위해 메모리와 디스크 비트 맵 캐시를 사용을 안내합니다.
비트 맵 메모리 관리 이 단원에서는 비트 맵 메모리를 관리하여 응용 프로그램의 성능을 최대화하는 방법을 설명합니다. 귀하의 UI 이 단원에서 비트 맵을 표시
어떻게 백그라운드 스레드 및 비트 맵 캐시를 사용하여 ViewPager와의 GridView 같은 구성 요소에 여러 비트 맵을로드하는 방법을 보여, 모든 것을 함께 제공합니다.
괜찮아요 almyz125을 배우게됩니다, 거기에 피카소 라이브러리의 링크입니다. – Jafir
https://github.com/square/picasso – almyz125