Volley加载圆形图片
来源:互联网 发布:淘宝网店免费模块 编辑:程序博客网 时间:2024/05/07 10:02
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">相信大家都用过Volley这个框架,我这里也不做过多介绍,它是一个网络通信的轻量级框架,主要用于小数据的上传下载和网络图片的请求,而且网络图片的下载它还提供了缓存机制,可以为图片自己设置一级缓存来减少网络的请求。</span><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">图片的加载一般都用到两个类,一个是ImageRequest一个是ImageLoader,而ImageLoader就是可以为图片设置一级缓存的。使用方法如下</span>
<span style="font-family: Arial, Helvetica, sans-serif;">public static void setImage(RequestQueue rQueue,ImageView imageView,String path){</span>
ImageLoader imageLoader = new ImageLoader(rQueue,new BitmapCache());ImageListener listener = ImageLoader.getImageListener(imageView, R.drawable.loading, R.drawable.loadfail); imageLoader.get(PathConstant.HOMEPATH+path, listener); }RequestQueue是一个请求队列,用来对网络请求进行缓存和处理,我们不必为每一次HTTP请求都创建一个RequestQueue对象,这是非常浪费资源的。所以在这里我建立了一个application,然后用单例模式定义了这个对象。BitmapCache就是一个图片的一级缓存,这里的缓存用的还是LruCache强引用来做,本来是用软引用加二级缓存的,为了方便说明这里就直接用一级缓存了。这个类的代码如下:
public class BitmapCache implements ImageCache { private LruCache<String, Bitmap> mCache; public BitmapCache() { int maxSize = (int) (Runtime.getRuntime().maxMemory()/15); mCache = new LruCache<String, Bitmap>(maxSize) { @Override protected int sizeOf(String key, Bitmap bitmap) { return bitmap.getRowBytes() * bitmap.getHeight(); } }; } @Override public Bitmap getBitmap(String url) { return mCache.get(url); } @Override public void putBitmap(String url, Bitmap bitmap) { mCache.put(url, bitmap); } }
然后R.drawable.loading, R.drawable.loadfail这两个图片的加载中和加载失败时显示的图片。这个一个图片的加载代码就写好了,但现在问题来了,现在的头像大多都是做成圆形的,而Volley并没在这个的Loader啊,对,它本身是没有,但这是开源框架嘛,想要什么功能自己改一下就是了。
所以,看看加载的代码,就只有三行代码,第一和第三行就是这个样子了,好像看不出什么端倪了,那就看看第二行,只有个<span style="font-family: Arial, Helvetica, sans-serif;">ImageListener,而它又是ImageLoder的一个静态方法,注意,是静态方法,看到这个是不是觉得世界都美好了很多。这时我们只要自己写一个</span><span style="font-family: Arial, Helvetica, sans-serif;">getImageListener方法就可以了,但怎么写呢,先看看人家的源码:</span>
<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="java"> public static ImageListener getImageListener(final ImageView view, final int defaultImageResId, final int errorImageResId) { return new ImageListener() { @Override public void onErrorResponse(VolleyError error) { if (errorImageResId != 0) { view.setImageResource(errorImageResId); } } @Override public void onResponse(ImageContainer response, boolean isImmediate) { if (response.getBitmap() != null) { view.setImageBitmap(response.getBitmap()); } else if (defaultImageResId != 0) { view.setImageResource(defaultImageResId); } } }; }
就这么点代码,这个看看,更觉得开心了,就改这几张图片就可以了,直接将view.setImageResource改成我们要的圆形图片就可以了:
<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="java">public static ImageListener getImageListener(final Context context,final ImageView view, final int defaultImageResId, final int errorImageResId) { return new ImageListener() { @Override public void onErrorResponse(VolleyError error) { if (errorImageResId != 0) { Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), errorImageResId); view.setImageBitmap(BitmapUtils.getRoundBitmap(bitmap,(int)ManagerUtil.getScreenWidth((Activity)context))); } } @Override public void onResponse(ImageContainer response, boolean isImmediate) { if (response.getBitmap() != null) { view.setImageBitmap(BitmapUtils.getRoundBitmap(response.getBitmap(),(int)ManagerUtil.getScreenWidth((Activity)context))); } else if (defaultImageResId != 0) { Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), defaultImageResId); view.setImageBitmap(BitmapUtils.getRoundBitmap(bitmap,(int)ManagerUtil.getScreenWidth((Activity)context))); } } }; }
那个BitmapUtils.getRoundBitmap是什么鬼,就是获取圆形图片的方法,至于里面的实现,可以看看我的第一篇圆形头像的简单画法。至此,一个能加载圆形图片的ImageLoader就产生了。
0 0
- Volley加载圆形图片
- Android开发之利用Volley加载圆形图片
- ImageLoader加载圆形图片
- 毕加索加载圆形图片
- ImageLoader加载圆形图片
- ImageLoader加载圆形图片
- ImageIolder加载圆形图片
- Glide加载圆形图片
- Gilde加载圆形图片
- Glide加载圆形图片
- Glide加载圆形图片
- Glide 圆形加载图片
- Volley加载图片
- Volley加载图片
- Volley 加载图片
- Volley加载网络图片
- Volley图片加载功能
- Volley加载网络图片
- 【Linux】various questions
- MD5,MD2,SHA加密的实现方式
- Bestcoders 57 1002
- JFreeChart(三.饼状图.1)
- 【Android】widget不能及时更新
- Volley加载圆形图片
- 大锤老湿教您如何配置TP-Link路由器组建wifi上网
- 通过超链接传值到jsp页面,用el表达式获取时中文乱码
- OJ学习笔记1
- the use of github in the Ubuntu
- myeclipse 2015 stable2.0 激活
- Hibernate 一级缓存
- 使用Word2013/2016发布CSDN博客
- USACO刷怪塔的开始