亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Volley框架之圖片的緩存

標簽:
Android

Volley的图片缓存要LruCahe和ImageCahe结合。
Volley网咯加载图片有三种:
ImageRequest: 没有用到图片的缓存
ImageLoader: 用到了图片的缓存
NetworkImageView: 用到图片的缓存
首先也要和数据获取的一样,要增加一个请求队列。

第一步:配置请求队列

import android.app.Application;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;
public class MyApplication extends Application {
public static RequestQueue queue;
@Override
public void onCreate() {
super.onCreate();
queue= Volley.newRequestQueue(getApplicationContext());
}
public static RequestQueue getHttpQueue(){
return queue;
}
}

请求队列完成以后,我们要把这个请求队列放在XML的清单文件里面。
直接android:name="写了请求队列的那个类的路径"
图片
图片描述
对面还要加一个网络权限。
<uses-permission android:name="android.permission.INTERNET"/>

接下我们写一个XML的布局,里面放图片。
图片描述

图片

第二步:我们先写ImageRequest来获取网咯图片。
private String url="http://www.baidu.com/img/bdlogo.png"; //图片的url
//第一个是图片的URL,第二个是图片加载成功的回调,第三个和第四个分别表示图片的宽度和高度(其 // 中为0,0表示原图的显示)
//第五个加载图片的格式,最后一个表示加载图片的错误

ImageRequest request =new ImageRequest(url, new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap bitmap) {
iv_img.setImageBitmap(bitmap); //图片加载成功我们就把图片放到ImageView中
}
}, 0, 0, Bitmap.Config.RGB_565, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
iv_img.setBackgroundResource(R.mipmap.ic_launcher);
}
});
MyApplication.getHttpQueue().add(request); //放到请求队列中。

第三步:我们来写ImageLoader来获取网咯图片。

//两个参数,第一个请求队列,第二个是缓存
ImageLoader loader = new ImageLoader(MyApplication.getHttpQueue(),new BitmapCache());
//三个参数,第一个是控件ID,第二个是默认的加载图片,第三个是加载出错的图片
ImageLoader.ImageListener listener =ImageLoader.getImageListener(iv_img,R.mipmap.ic_launcher,R.mipmap.ic_launcher);
loader.get(url,listener);//里面的有两个参数和四个参数,两个参数不会定义图片宽度和高度

 这里我们就要建立一个缓冲的类

import android.graphics.Bitmap;
import android.support.v4.util.LruCache;
import com.android.volley.toolbox.ImageLoader;

public class BitmapCache implements ImageLoader.ImageCache {
public LruCache<String,Bitmap> cache;
public int max=1010241024;//缓存内存的大小,当超过缓存会自动清除
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);
}
}

第四步:我们来写NetworkImageView来获取网咯图片。

private NetworkImageView networkImageView;

networkImageView= (NetworkImageView) findViewById(R.id.networkImageView);

//两个参数,第一个请求队列,第二是图片缓存
ImageLoader loader = new ImageLoader(MyApplication.getHttpQueue(),new BitmapCache());
networkImageView.setDefaultImageResId(R.mipmap.ic_launcher);//正在加载中一个图片
networkImageView.setErrorImageResId(R.mipmap.ic_launcher);//加载失败的图片
networkImageView.setImageUrl(url,loader);

點擊查看更多內容
2人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
移動開發工程師
手記
粉絲
15
獲贊與收藏
320

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消