NetWorkImageView:
Volley提供的图像组件,其父类是ImageView,在里面可以通过url处理获取的图像及请求的生命周期。
添加到布局中:
<com.android.volley.toolbox.NetworkImageView
android:id="@+id/netimg_ex"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</com.android.volley.toolbox.NetworkImageView>
实例:
RequestQueue queue = null;
queue = Volley.newRequestQueue(this);
NetworkImageView img = (NetworkImageView) findViewById(R.id.netimg_ex);
ImageLruCache imagecache = new ImageLruCache();
ImageLoader loader = new ImageLoader(queue, imagecache);
// 默认图片
img.setDefaultImageResId(R.drawable.ic_launcher);
// 错误图片
img.setErrorImageResId(R.drawable.ic_launcher);
img.setImageUrl("http://img10.3lian.com/c1/newpic/10/08/22.jpg", loader);
自定义的缓存类:
public class ImageLruCache implements ImageCache {
private LruCache<String, Bitmap> mCache;
public ImageLruCache() {
int maxSize = 10 * 1024 * 1024;
mCache = new LruCache<String, Bitmap>(maxSize) {
@Override
protected int sizeOf(String key, Bitmap value) {
return value.getRowBytes() * value.getHeight();
}
};
}
@Override
public Bitmap getBitmap(String arg0) {
// TODO Auto-generated method stub
return mCache.get(arg0);
}
@Override
public void putBitmap(String arg0, Bitmap arg1) {
// TODO Auto-generated method stub
mCache.put(arg0, arg1);
}
}
ViewHolder中使用NetWorkImageView:
public class ImageAdp extends BaseAdapter {
private Context context;
private List<String> urls;
private ImageLoader loader;
public ImageAdp(Context context, List<String> urls) {
this.context = context;
this.urls = urls;
RequestQueue queue = Volley.newRequestQueue(context);
loader = new ImageLoader(queue, new ImageLruCache());
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return urls.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public View getView(int posi, View conView, ViewGroup arg2) {
// TODO Auto-generated method stub
ViewHolder holder;
if (null == conView) {
holder = new ViewHolder();
conView = LayoutInflater.from(context).inflate(R.layout.line_img,
null);
holder.img = (NetworkImageView) conView.findViewById(R.id.img_net);
holder.img.setDefaultImageResId(R.drawable.ic_launcher);
holder.img.setErrorImageResId(R.drawable.ic_launcher);
conView.setTag(holder);
} else {
holder = (ViewHolder) conView.getTag();
}
holder.img.setImageUrl(urls.get(posi), loader);
return conView;
}
private static class ViewHolder {
private NetworkImageView img;
}
}
2.ImageView:
其实跟上面的差不多。
RequestQueue queue = null;
queue = Volley.newRequestQueue(this);
ImageView img = (ImageView) findViewById(R.id.netimg_ex);
ImageLruCache imagecache = new ImageLruCache();
ImageLoader loader = new ImageLoader(queue, imagecache);
ImageListener listener = ImageLoader.getImageListener(img,
R.drawable.ic_launcher, R.drawable.ic_launcher);
loader.get("http://img10.3lian.com/c1/newpic/10/08/22.jpg", listener);
ViewHolder中使ImageView:
public class ImageAdp extends BaseAdapter {
private Context context;
private List<String> urls;
private ImageLoader loader;
public ImageAdp(Context context, List<String> urls) {
this.context = context;
this.urls = urls;
RequestQueue queue = Volley.newRequestQueue(context);
loader = new ImageLoader(queue, new ImageLruCache());
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return urls.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public View getView(int posi, View conView, ViewGroup arg2) {
// TODO Auto-generated method stub
ViewHolder holder;
if (null == conView) {
holder = new ViewHolder();
conView = LayoutInflater.from(context).inflate(R.layout.line_img,
null);
holder.img = (ImageView) conView.findViewById(R.id.img_net);
conView.setTag(holder);
} else {
holder = (ViewHolder) conView.getTag();
}
ImageListener listener = ImageLoader.getImageListener(holder.img,
R.drawable.ic_launcher, R.drawable.ic_launcher);
loader.get(urls.get(posi), listener);
return conView;
}
private static class ViewHolder {
private ImageView img;
}
}