public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
String path = Environment.getExternalStorageDirect
ory();
File cacheDir = new File(path);
//希望有缓存,指明缓存的路径
ImageLoaderConfiguration
config = new ImageLoaderConfiguration
.Builder(this)
//指明内存缓存要缓存多少*多少像素图片
480 * 800
.memoryCacheExtraOptions(480,800)
//指明线程优先级
.threadPriority(100)
//配置多少个线程在后台加载图片
.threadPoolSize(3)
//指明图片sdcard缓存,缓存到什么地方
.diskCache(new UnlimitedDiskCache(cacheDir))
//限定一下内存缓存的大小
在内存缓存当中缓存2MB的大小图片
.memoryCacheSize(2 * 1024 * 1024)
//在sdcard缓存多少MB的图片
.diskCacheSize(50 * 1024 * 1024)
//指明图片文件名(MD5) 为了避免有重复的图片
.diskCacheFileNameGenerat
or(new Md5FileNameGenerator())
.build();
//构建加载图片配置
ImageLoader.getInstance().init(config);
}
}
public class MainActivity extends AppCompatActivity {
private GridView gv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gv = (GridView) findViewById(R.id.gv);
gv.setAdapter(new MyBaseAdapter());
}
}
class MyBaseAdapter extends BaseAdapter{
private DisplayImageOptions options;
public MyBaseAdapter(){
options = new DisplayImageOptions.Builder()
//对图片进行sdcard缓存
.cacheOnDisk(true)
//是否对图片进行内存缓存
.cacheInMemory(true)
//配置下载网络图片失败的图片
.showImageOnFail(R.mipmap.ic_error)
//配置一个正在加载图片时候显示的一张默认图片
.showImageOnLoading(R.mipmap.loading)
//当图片地址为空的时候,会显示你默认配置的图片
.showImageForEmptyUri(R.mipmap.ic_empty)
//将图片裁剪成圆形图片
//.displayer(new CircleBitmapDisplayer())
//将图片裁剪成圆角矩形
.displayer(new RoundedBitmapDisplayer(50))
.build();
}
@Override
public int getCount() {
return Constants.images.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if(convertView == null){
viewHolder = new ViewHolder();
convertView = convertView.inflate(MainActivity.this,R.layout.item,null);
viewHolder.ivIcon = (ImageView) convertView.findViewById(R.id.ivIcon);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder) convertView.getTag();
}
//加载图片
ImageLoader.getInstance().displayImage(Constants.images[position],viewHolder.ivIcon,options);
return convertView;
}
class ViewHolder{
ImageView ivIcon;
}
}