ImageLoader需要导入的依赖
implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
首先配置一个MyApplication继承application
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
//重点
DisplayImageOptions imageOptions = new DisplayImageOptions.Builder()
.showImageForEmptyUri(R.mipmap.ic_launcher)//url为空或请求的资源不存在时
//缓存到目录
.cacheOnDisk(true)
.cacheInMemory(true)//使用内存缓存
.bitmapConfig(Bitmap.Config.RGB_565) //设置图片的解码类型
.displayer(new CircleBitmapDisplayer())//加载圆角图片
.build();
//创建默认的imageLoader适配函数
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this)
.defaultDisplayImageOptions(imageOptions)
//缓存目录
.diskCache(new UnlimitedDiskCache(new File(getCacheDir(),"image")))
//缓存到磁盘
//diskCache(new UnlimitedDiskCache(new File(Environment.getExternalStorageDirectory(),"image")))
.build();
ImageLoader.getInstance().init(configuration);
}
}
然后在mainfest文件中设置application属性name=” 你自定义的application名字”
加上权限
并且加上可读可写的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
接着就是主代码了
public class MyAdapter extends BaseAdapter {
private ImageLoader imageLoader = ImageLoader.getInstance();
private List<Bean.DataBean> list;
private Context context;
private ImageView img;
public MyAdapter(List<Bean.DataBean> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@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 holder = null;
if(convertView==null){
holder = new ViewHolder();
convertView = View.inflate(context,R.layout.list_layout,null);
holder.title = convertView.findViewById(R.id.title);
img = convertView.findViewById(R.id.img);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.title.setText(list.get(position).getTitle());
//获取图片路径
String path = list.get(position).getThumbnail_pic_s();
//使用ImageLoader框架 options参数是上面有参里面自己定义的一个
imageLoader.displayImage(path, img);
return convertView;
}
class ViewHolder{
public TextView title;
public ImageView img;
}
}
使用ImageLoader必须要在布局中设置高,不然他不会显示,宽自己会充满