public class MyApplication extends Application {
@Override
public void onCreate()
{
super.onCreate();
String path =
Environment.getExternalStorageDirectory();
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)
为了避免有重复的图片
.diskCacheFileNameGenerator(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;
}
}