Volley缓存方式下载图片
来源:互联网 发布:期货数据分析 编辑:程序博客网 时间:2024/03/28 18:44
/**通过Volley内部封装的缓存机制,解决图片错位和加载闪退问题 * 步骤 * ①实现Volley下的ImageCache接口 * ②用Volley封装好的控件NetworkImageView * ③设置NetworkImageView的默认、失败、成功图片 * 参数中会需要Volley下的ImageLoader类,要实例化一个ImageLoader对象 * */import java.util.List;import com.android.volley.toolbox.ImageLoader;import com.android.volley.toolbox.NetworkImageView;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.GridView;import android.widget.ImageView;public class MainActivity extends Activity { private GridView gv; private String imgUrlArray []; private ImageLoader loader; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imgUrlArray=ImageData.imgUrlArray; loader=new ImageLoader(MyApplication.getRequestQueue(), new ImageCache()); gv=(GridView)findViewById(R.id.gv); gv.setAdapter(new GV_adapter()); } class GV_adapter extends BaseAdapter{ @Override public int getCount() { return imgUrlArray.length; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { NetworkImageView img=null; if(convertView==null){ img=(NetworkImageView) new NetworkImageView(MainActivity.this); convertView=img; convertView.setTag(img); }else{ img=(NetworkImageView) convertView.getTag(); } String path=imgUrlArray[position]; img.setDefaultImageResId(R.drawable.ic_launcher);//默认图片 img.setErrorImageResId(R.drawable.ic_launcher);//下载失败 显示图片 img.setImageUrl(path, loader);//下载成功显示图片 return convertView; } }}
package com.example.volley2;
import android.graphics.Bitmap;
import android.util.LruCache;
/**
* ImageCache接口————-整个接口都由Volley内部调用
* ① 声明一个缓存对象
* ②在构造方法中实例化缓存对象并重写sizeof方法
* ③在getBitmap方法总返回Bitmap
* ④在putBitmap方法中保存Bitmap
* @author Administrator
*
*/
public class ImageCache implements com.android.volley.toolbox.ImageLoader.ImageCache{
private LruCache<String, Bitmap> lruCache;//缓存对象private int max=1024*1024*10;//10M 缓存区最大空间public ImageCache() { lruCache=new LruCache<String, Bitmap>(max){ @Override protected int sizeOf(String key, Bitmap value) { return value.getRowBytes()*value.getHeight(); } };}@Overridepublic Bitmap getBitmap(String arg0) { return lruCache.get(arg0);}@Overridepublic void putBitmap(String arg0, Bitmap arg1) { lruCache.put(arg0, arg1);}
}
public class MyApplication extends Application{ private static RequestQueue rq; @Override public void onCreate() { super.onCreate(); rq=Volley.newRequestQueue(getApplicationContext()); } public static RequestQueue getRequestQueue(){ return rq; }}
0 0
- Volley缓存方式下载图片
- volley进行图片缓存
- 使用Volley下载图片
- Volley 加载图片,文件缓存
- 图片缓存器 需要volley
- Volley进行图片加载和图片缓存
- 自己写的一个图片三级缓存的工具类,下载图片使用的是volley和httpUrlConnection相同
- android-volley 图片缓存分析与比较
- android-volley 图片缓存分析与比较
- 结合volley实现图片三级缓存
- 强制Volley缓存图片到磁盘
- Volley图片加载并加入缓存处理
- 下载图片缓存方法
- 离线下载缓存图片
- Android Volley图片缓存机制结合DiskLruCache实现磁盘缓存
- 使用Volley缓存图片时,缓存无效的原因。
- Volley实现图片的网络下载
- Android - Volley的ImageLoader下载图片
- LeetCode(6) - ZigZag Conversion
- C#打印控件内容,控件快照
- JQGrid各种参数详解API
- android 学习系列教程
- QT 如何改图可执行文件图标
- Volley缓存方式下载图片
- ERP原理
- code
- 51nod1307 绳子与重物
- 自动测试常用的判定方法
- 探讨一下C语言中char类型数组的移位操作
- Android源码剖析之------常见Window的创建过程
- Android基础之自己创建活动
- Java中的装箱,拆箱详解