您的位置:首页 > 理论基础 > 计算机网络

使用volley加载网络图片

2015-08-13 10:47 639 查看
1、导入volley jar包

2、创建队列类

public class MyApplication extends Application{
public static RequestQueue queues;
@Override
public void onCreate() {
super.onCreate();
queues= Volley.newRequestQueue(getApplicationContext());
}

public static RequestQueue getHttpQueens(){
return queues;
}
}
3、在manifest里注册

<application
android:name=".MyApplication"

4、三种方式加载网络图片

1)ImageRequest 直接加载


private void showImage(){
String url="https://www.baidu.com/img/bdlogo.png";
/*maxWidth,maxHeight都设为0的话是加载原图大小 都设为100 的话就是按照比例压缩
decodeConfig:加载图片的格式
* */
ImageRequest imageRequest=new ImageRequest(url,new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap bitmap) {
iv_img.setImageBitmap(bitmap);
}
},0,0, Bitmap.Config.RGB_565,new Response.ErrorListener(){

@Override
public void onErrorResponse(VolleyError volleyError) {
iv_img.setBackgroundResource(R.mipmap.ic_launcher);
}
});
MyApplication.getHttpQueens().add(imageRequest);
}
2)、利用ImageLoader、LruCache缓存加载图片

缓存类:



public class BitmapCache implements ImageLoader.ImageCache {
public LruCache<String,Bitmap> cache;
public int max=10*1024*1024;//定义缓存最大空间是10M,如果当前内存的缓存超过10M,会自动回收
public BitmapCache(){
cache=new LruCache<String,Bitmap>(max){
@Override
protected int sizeOf(String key, Bitmap value) {
return value.getRowBytes()*value.getHeight();
}
};
}
@Override
public Bitmap getBitmap(String s) {
return cache.get(s);
}
@Override
public void putBitmap(String s, Bitmap bitmap) {
//将图片放入缓存
cache.put(s,bitmap);
}
}

显示:



private void showImageCache(){
String url="https://www.baidu.com/img/bdlogo.png";
ImageLoader imageLoader=new ImageLoader(MyApplication.getHttpQueens(),new BitmapCache());
//监听
ImageLoader.ImageListener listener=ImageLoader.getImageListener(iv_img,R.mipmap.ic_launcher,R.mipmap.ic_launcher);
imageLoader.get(url,listener);
}

3)//使用NetworkImageView加载网络图片
布局:




下载地址:http://download.csdn.net/detail/xiaruoli89/8999253
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: