现在的位置: 首页 > 综合 > 正文

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

2013年10月27日 ⁄ 综合 ⁄ 共 1120字 ⁄ 字号 评论关闭

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();

}

抱歉!评论已关闭.