一楞陷、ImageLoader的下載
GitHub:https://github.com/nostra13/Android-Universal-Image-Loader
二、使用步驟
- 需要在活動(dòng)的oncreate()中初始化ImageLoader
private void initImageLoader(Context context) {
// 初始化參數(shù)
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
.threadPriority(Thread.NORM_PRIORITY - 2) // 線程優(yōu)先級(jí)
.denyCacheImageMultipleSizesInMemory() // 當(dāng)同一個(gè)Uri獲取不同大小的圖片,緩存到內(nèi)存時(shí)途事,只緩存一個(gè)。默認(rèn)會(huì)緩存多個(gè)不同的大小的相同圖片
.discCacheFileNameGenerator(new Md5FileNameGenerator()) // 將保存的時(shí)候的URI名稱用MD5
.tasksProcessingOrder(QueueProcessingType.LIFO) // 設(shè)置圖片下載和顯示的工作隊(duì)列排序
.writeDebugLogs() // 打印debug log
.build();
// 全局初始化此配置
ImageLoader.getInstance().init(config);
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.xxxx);
initImageLoader(this);
}
- 在適配器中,以一個(gè)足跡Demo為例
/**
* Created by Orimol on 2017/12/22.
* By Orimol
*/
public class FootMarkAdapter extends BaseAdapter {
// 固定寫(xiě)法本股,用于接收activity傳遞的值
private List<Footmark> footmarks;
private Context context;
// END
// Demo About ListView add photo
private ImageLoader imageLoader;
private DisplayImageOptions options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.imagexiangce) // 設(shè)置圖片下載期間顯示的圖片
.showImageForEmptyUri(R.drawable.imagexiangce) // 設(shè)置圖片Uri為空或是錯(cuò)誤的時(shí)候顯示的圖片
.showImageOnFail(R.drawable.imagexiangce) // 設(shè)置圖片加載或解碼過(guò)程中發(fā)生錯(cuò)誤顯示的圖片
.cacheInMemory(true) // 設(shè)置下載的圖片是否緩存在內(nèi)存中
.cacheOnDisk(true) // 設(shè)置下載的圖片是否緩存在SD卡中
//.displayer(new RoundedBitmapDisplayer(20)) // 設(shè)置成圓角圖片
.build(); // 創(chuàng)建配置過(guò)得DisplayImageOption對(duì)象;
// END
public FootMarkAdapter(Context context,List<Footmark> footmarks){
this.context = context;
this.footmarks = footmarks;
imageLoader = ImageLoader.getInstance();
}
@Override
public int getCount() {
return footmarks.size();
}
@Override
public Object getItem(int position) {
return footmarks.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null) {
convertView = View.inflate(context, R.layout.footmark_item, null);
holder = new ViewHolder();
holder.footmark_item_image = (ImageView) convertView.findViewById(R.id.footmark_photo);
holder.footmark_item_time = (TextView) convertView.findViewById(R.id.footmark_time);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.footmark_item_time.setText(footmarks.get(position).getLocation());
// 防止圖片會(huì)加載兩次,將其設(shè)為false
imageLoader.displayImage(footmarks.get(position).getPhoto(),new ImageViewAware(holder.footmark_item_image,false),options);
return convertView;
}
class ViewHolder {
ImageView footmark_item_image;
TextView footmark_item_time;
}
}