创建一个自定义类,继承Application,重写onCreat方法,加载完一下的方法以后必须去
AndroidManifest.xml 中的<application> 里面添加 name (android:name=".MyApplication"
)属性,引用自定义的MyApplication 类,还需要申请INTENET和SDcard的读和写的权限
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
File file = new File(Environment.getExternalStorageDirectory().getPath() + "/pictrues0714");
ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this)
.memoryCacheExtraOptions(100, 100)//设置图片压缩的大小尺寸
.memoryCacheSize(2 * 1024 * 1024)//设置图片的缓冲大小
.threadPoolSize(3)//设置运行的线程个数
.threadPriority(1000)//设置线程的优先级
// .diskCacheFileCount(100)//设置加载的图片个数
.diskCacheSize(50 * 1024 * 1024)//设置加载图片的总大小,他和加载图片个数可以二选其一
.diskCache(new UnlimitedDiskCache(file))//设置图片缓冲的路劲
.diskCacheFileNameGenerator(new Md5FileNameGenerator())//设置图片缓冲的名字,防止名字相同
.build();//最后把它创建出来
ImageLoader.getInstance().init(build);
}
}
然后在MainActivity中设置如下
public class MainActivity extends AppCompatActivity {
private ImageView img;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img = (ImageView) findViewById(R.id.img);
String path = "http://cdn.duitang.com/uploads/blog/201308/18/20130818150526_Ru2Bk.thumb.600_0.png";
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true)//设置图片是否支持缓冲
.cacheOnDisk(true)//设置sdcard是否支持缓冲
.displayer(new CircleBitmapDisplayer())//设置圆形图片
// .displayer(new RoundedBitmapDisplayer(20))//设置图片圆角
//加载这三个showImage的方法可用避免ListView加载的时候图片错位问题
.showImageForEmptyUri(R.mipmap.ic_empty)//加载图片为空的时候显示这个图片 .showImageOnFail(R.mipmap.ic_error)//请求失败的时候显示这个图片 .showImageOnLoading(R.mipmap.loading)//正在加载的时候显示的图片 .build(); ImageLoader.getInstance().displayImage(path, img, options);
}
}