加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Android利用Volley框架加载网络图片

发布时间:2020-12-14 23:49:56 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 ? ? ? ?Volley框架是在Google I/O 2013上Volley发布的,目的是使Android平台上的网络通信库,能使网络通信更快,更简单,更健壮。我们也简单了解下Vol

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

? ? ? ?Volley框架是在Google I/O 2013上Volley发布的,目的是使Android平台上的网络通信库,能使网络通信更快,更简单,更健壮。我们也简单了解下Volley引入的背景,在Volley出现以前,我们可能面临如下的问题,比如要在ListView或是GridView中加载数量较多的图片时:先在ListAdapter#getView()里开始图像的读取,再通过AsyncTask等机制使用HttpURLConnection从服务器去的图片资源,然后在AsyncTask#onPostExecute()里设置相应ImageView的属性。这样下来不仅仅步骤繁琐,而且不考虑周全的话,还可能出现OOM等问题。现在有了Volley后我们只需要一个函数即可实网络图片的加载。简单地讲Volley功能有:
  • JSON,图像等的异步加载;
  • 网络请求的排序;
  • 网络请求的优先级处理;
  • 图片缓存;
  • 多级别取消请求;
  • 和Activity生命周期的联动(Activity结束时同时取消所有网络请求)等。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
    今天先简单贴下用Volley加载网络图片,下次有时间再贴下用Volley实现http请求及json数据加载。用Volley加载网络图片常用有两种方式,一种是用ImageLoader,另外是用Volley封装好的图片控件NetworkImageView:
  • 第一种方式步骤:
  • ?创建一个RequestQueue对象,就一句话:
    RequestQueue?mQueue?=?Volley.newRequestQueue(context);?
  • 创 建一个ImageLoader对象,
    ImageLoader mImageLoader= new ImageLoader(mRequestQueue,new BitmapLruCache(cacheSize));      
    public class BitmapLruCache extends LruCache<String,Bitmap> implements ImageLoader.ImageCache {
    public BitmapLruCache(int maxSize) {
    super(maxSize);
    }
    protected int sizeOf(String key,Bitmap bitmap) {
    return (bitmap.getRowBytes() * bitmap.getHeight());
    }
    public Bitmap getBitmap(String url) {
    return ((Bitmap) get(url));
    }
    public void putBitmap(String url,Bitmap bitmap) {
    put(url,bitmap);
    }
    }***
    创建ImageLoader中的参数cacheSize就是我们设置的缓存文件最大值,比如可以设置int?cacheSize=?10?*?1024?*?1024; ?
  • 创建ImageListener listener = ImageLoader.getImageListener(imageView,R.drawable.default_image,R.drawable.failed_image);//imageView参数就是我们要展示图片的控件
  • 然后就可以加载图片了:imageLoader.get("http://www.xxxxxxx.jpg",?listener);//传入图片url及上面创建的listener就可OK.
  • 第二种方式,就是利用Volley封装好的NetworkImageView加载图片。
  • 这种方式更简单,把NetworkImageView当成我们平时用的ImageView放到我们要加载图片的布局xml中,在对应的代码中用NetworkImageView imageView=findViewById();找到控件,
  • networkImageView.setDefaultImageResId(R.drawable.default_icon);//加载中显示的图片
    networkImageView.setErrorImageResId(R.drawable.failed_icon);//加载失败时显示的图片
    networkImageView.setImageUrl("http://xxxxxxx.jpeg",imageLoader);//目标图片的URL地址(第一个参数用于指定图片的URL地址,第二个参数则是上面创建好的ImageLoader对象)。

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读