Android Glide
Glide是Android图片的加载与缓存的一个开源的框架。在我们的app中,当手机本地图片比较少的时候可以较快的加载,但是当图片较多时,图片加载的时间就大大增加,另外由于图片的大小不是都一样的,所以我们使用Glide可以使所有图片在图片列表中多可以以相同的大小显示给我们,以达到美观的效果。
Glide的jar包导入lib文件夹下:
import com.bumptech.glide.Glide;
Glide框架的使用方法:
Glide.with(context).load(本地资源).into(imageview);
部分代码:
private int[] imageTo;
private String[] imageFrom;
private ViewBinder imageViewBinder;
private List<?extends Map<String,?>> imageData;
private LayoutInflater imageInflater;
private Context context;
public HashMap<Integer,Boolean> isSelected;
public int resource;
static class ViewHolder{
CheckBox selected;
TextView path;
TextView date;
TextView size;
ImageView image;
}
public HashMap<Integer,Boolean> getIsSelected()
{
return isSelected;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return super.getItem(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return super.getItemId(position);
}
//构造器
public PictureAdapter(Context context, List<? extends Map<String, ?>> data,
int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
// TODO Auto-generated constructor stub
this.context=context;
this.resource=resource;
imageData=data;
imageFrom=from;
imageTo=to;
imageInflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
init();
}
private void init()
{
isSelected=new HashMap<Integer,Boolean>();
for(int i=0;i<imageData.size();i++)
{
isSelected.put(i, false);
}
}
public View getView(final int position,View view,ViewGroup parent)
{
ViewHolder holder = null;
if(null == holder)
{
//总是新建一个ViewHolder对象,用来保存每一个listview条目的信息
holder = new ViewHolder();
if(null == view)
{
imageInflater = LayoutInflater.from(context);
view = imageInflater.inflate(resource, null);
}
holder.date= (TextView) view.findViewById(R.id.pictureDate);
holder.size = (TextView) view.findViewById(R.id.pictureSize);
holder.selected = (CheckBox) view.findViewById(R.id.choosePicture);
holder.path=(TextView)view.findViewById(R.id.picturePath);
holder.image=(ImageView)view.findViewById(R.id.image);
}
Map<String, ?> map = imageData.get(position);
if(null != map)
{
String date=(String) map.get("date");
String size=(String)map.get("size");
String path=(String)map.get("path");
holder.date.setText(date);
holder.size.setText(size);
holder.path.setText(path);
Glide.with(context).load(new File(path)).into(holder.image);
}
//添加checkBox监听
holder.selected.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton arg0, boolean isCheck)
{
if(isCheck)
{
isSelected.put(position, true);
//System.out.println("add checked=" + position);
}
else
if(!isCheck)
{
isSelected.put(position, false);
//System.out.println("remove checked=" + position);
}
}
});
//根据isSelected中记录的信息,设置checkbox的状态
holder.selected.setChecked(isSelected.get(position));
return view;
}