本机图片缓存,距离上次好久了

来源:互联网 发布:网络标志图标 编辑:程序博客网 时间:2024/05/10 12:52

public class LocalCache {

//首先是从内存里面去读取,这里就不做阐述了,放到一个arrayList<Drawable>里面

ViewHolder holder;

private HashMap<Integer,Bitmap> imageCache;

public View getView(int position, View convertView, ViewGroup parent){

imageCache=new HashMap<Integer,Bitmap>();

if(convertView==null){

convertView=inflater.inflate(R.layout.main,null);

holder.photo=(ImageView)convertView.findViewById(R.id.iv);

convertView.setTag(holder);

}

else{

holder=(ViewHolder)convertView.getTag();

}

Bitmap current=imageCache.get(position);

if(current==null){

current=//从你存取图片的链表或者其他读取出来

imageCache.put(positon,current);

holder.photo.setImageBitmap(current);

}

else{

holder.photo.setImageBitmap(current);

}

return convertView;

}

static class ViewHolder{

ImageView photo;

}

}

//然后在后面的activity当中让你的imageCache仅缓存你想要的张数+正在显示的张数,比如我只想要12张+正在显示的

int start=confirmgridview.getFirstVisiblePosition()-6;

int end=confirmgridview.getLastVisiblePosition()+6;

//把你的ImageCache传递过来

Bitmap delBitmap

for(del=0,del<start;del++){

delBitmap=imageCache.get(del);

imageCache.delete(delBitmap);

delBitmap.recycle();

}

for(del=end+1;del<imageCache.length;del++){

delBitmap=imageCache.get(del);

imageCache.delete(delBitmap);

delBitmap.recycle();

}

原创粉丝点击