一.在布局中采用volley的netWorkImagview控件
1.定义一个类继承ImageCache,重写一个获取bitmap和储存bitmap的方法.
2.定义LruCahe的成员变量(匿名内部类),重新insize方法,指定单个图片的最大值
3.使用imageCache对象调用get和put方法分别获取和返回bitmap
4.创建请求队列.
5.创建imageLoader对象.
6.拿到netWorkImageview对象调用setImagUrl.
public class MainActivity extends AppCompatActivity {
private NetworkImageView netImage;
private String url;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_main);
initView();
url = "http://10.0.3.2:8080/imgs/sunny.jpg";
}
public void loadImage(View v) {
RequestQueue queue = Volley.newRequestQueue(this);
MyImageCache imageCache = new MyImageCache();
ImageLoader imageLoader = new ImageLoader(queue,imageCache);
netImage.setImageUrl(url, imageLoader);
}
private class MyImageCache implements ImageLoader.ImageCache {
int cacheSize = 5 * 1024 * 1024; // 5MiB,单位要统一
LruCache bitmapCache = new LruCache(cacheSize) {
/**计算每张图片的大小*/
protected int sizeOf(String key, Bitmap value) {
return value.getByteCount();
}
};
//下面两个方法就是图片缓存的核心
/**
* 从缓存中获取
* @param url
* @return
*/
@Override
public Bitmap getBitmap(String url) {
return (Bitmap) bitmapCache.get(url);
}
/**
* 存储到缓存中
* @param url
* @param bitmap
*/
@Override
public void putBitmap(String url, Bitmap bitmap) {
bitmapCache.put(url, bitmap);
}
}
private void initView() {
netImage = (NetworkImageView) findViewById(R.id.netImage);
}
}