Volley进行图片加载和图片缓存
来源:互联网 发布:wpf编程宝典 c 2010 编辑:程序博客网 时间:2024/04/26 12:11
在开发中我们经常遇到需要对图片进行加载和缓存的情况,Volley框架为我们提供多种图片加载的方法,我们可以根据项目的需求选择响应的方法,解决图片加载、图片缓存会变得非常简单。下面我将介绍Volley框架进行图片加载和图片缓存的使用步骤:
1、实现ImageCache
package com.example.test;import com.android.volley.toolbox.ImageLoader.ImageCache;import android.graphics.Bitmap;import android.util.LruCache;/*********************************************** ** 创建人:黎荣恒 ** 日 期 : 2015年12月1日 上午9:44:43 ** 描述 : 图片缓存 ** ** 版 本 : 1.0 修改人: 日 期 : 修改记录: ************************************************/public class BitmapCache implements ImageCache{public LruCache<String, Bitmap> cache;public int max = 10 * 1024 * 1024;//规定最大缓存为10兆,如果超过了10兆自动回收public BitmapCache(){cache = new LruCache<String, Bitmap>(max){@Overrideprotected int sizeOf(String key, Bitmap value){return value.getRowBytes() * value.getHeight();}};}@Overridepublic Bitmap getBitmap(String url){return cache.get(url);}@Overridepublic void putBitmap(String url, Bitmap bitmap){cache.put(url, bitmap);}}
2、布局文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:id="@+id/iv_img1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="15dp"/> <ImageView android:id="@+id/iv_img2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="30dp"/> <com.android.volley.toolbox.NetworkImageView android:id="@+id/networkImageView" android:layout_width="300dp" android:layout_height="300dp" android:layout_marginTop="30dp"/></LinearLayout>
3、下面就是加载图片的三种方式,其中前面的一种方法不进行图片缓存,后面两种加载方法会进行图片的缓存,直接上代码
package com.example.test;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.os.Bundle;import android.widget.ImageView;import android.widget.Toast;import com.android.volley.Response.ErrorListener;import com.android.volley.Response.Listener;import com.android.volley.VolleyError;import com.android.volley.toolbox.ImageLoader;import com.android.volley.toolbox.ImageLoader.ImageListener;import com.android.volley.toolbox.ImageRequest;import com.android.volley.toolbox.NetworkImageView;/*********************************************** ** 创建人: 黎荣恒 ** 日 期 : 2015年11月30日 下午6:32:08 ** 描述 : Volley加载图片 ** ** 版 本 : 1.0 修改人: 日 期 : 修改记录: ************************************************/public class LoadImageActivity extends Activity{private ImageView imageView1,imageView2;private NetworkImageView mNetworkImageView;String url = "http://www.logoing.net/wp-content/uploads/2012/08/baidulogo1.jpg";@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.loadimage_activity);imageView1 = (ImageView) findViewById(R.id.iv_img1);imageView2 = (ImageView) findViewById(R.id.iv_img2);mNetworkImageView = (NetworkImageView) findViewById(R.id.networkImageView);loadImage();cacheImage();networkImageViewLoad();}/** * 使用ImageRequest进行图片加载,不进行缓存 */private void loadImage(){/** * 图片请求对象 * 第一个参数:请求接口 * 第二个参数:请求成功监听 * 第三个参数:请求到的图片最大的宽度 如果是0表示图片默认大小 * 第四个参数:请求到的图片最大的高度 如果是0表示图片默认大小 * 第五个参数:图片格式 * 第六个参数:请求失败监听 */ImageRequest imageRequest = new ImageRequest(url, new Listener<Bitmap>() {@Overridepublic void onResponse(Bitmap response){imageView1.setImageBitmap(response);}}, 0, 0, Config.RGB_565, new ErrorListener() {@Overridepublic void onErrorResponse(VolleyError error){Toast.makeText(LoadImageActivity.this, "图片请求失败", Toast.LENGTH_LONG).show();}});//添加任务到请求队列VolleySingleton.getVolleySingleton(getApplicationContext()).addToRequestQueue(imageRequest);}/** * ImageLoader加载图片并进行缓存 */private void cacheImage(){ImageLoader loader = new ImageLoader(VolleySingleton.getVolleySingleton(getApplicationContext()).getRequestQueue(),new BitmapCache());/** * 第一个参数:图片加载完成用于先是图片的控件 第二个参数:默认图片 第三个参数:加载出错显示的图片 */ImageListener listener = ImageLoader.getImageListener(imageView2,R.drawable.ic_launcher, R.drawable.ic_launcher);loader.get(url, listener);// 加载的图片不进行压缩// loader.get(requestUrl, imageListener, maxWidth,maxHeight);//进行压缩,规定图片的最大宽高}/** * 使用ImageLoader和NetworkImageView的结合进行图片的加载和缓存 */private void networkImageViewLoad(){ImageLoader loader = new ImageLoader(VolleySingleton.getVolleySingleton(getApplicationContext()).getRequestQueue(),new BitmapCache());//设置显示的默认图片mNetworkImageView.setDefaultImageResId(R.drawable.ic_launcher);//加载出错显示的图片mNetworkImageView.setErrorImageResId(R.drawable.ic_launcher);mNetworkImageView.setImageUrl(url, loader);}}
项目源码下载地址:http://download.csdn.net/detail/u013043346/9315759
0 0
- Volley进行图片加载和图片缓存
- volley进行图片缓存
- Volley 加载图片,文件缓存
- ImageLoader进行图片缓存和加载
- Volley图片加载并加入缓存处理
- 【Volley】加载图片和StringRequest
- Volley加载图片
- Volley加载圆形图片
- Volley加载图片
- Volley 加载图片
- Volley加载网络图片
- Volley图片加载功能
- Volley加载网络图片
- Volley加载图片
- Volley加载网络图片
- 使用Volley加载图片
- Volley加载网络图片
- Volley加载图片
- libcurl的get、post、download的类
- CString字符串操作
- System Questions
- Servlet url-pattern
- trie tree
- Volley进行图片加载和图片缓存
- 欢迎使用CSDN-markdown编辑器
- java调用动态链接库
- F5负载均衡
- 如何应用Swing 与GUI 来完成一款扫雷
- 汉字姓名怎么取到姓名的汉语拼音首字母
- linux 下文件加密压缩和解压的方法
- 【C/C++学习笔记】改造 printf 的小例子
- redis-cluster研究和使用