本文涉及转载自郭霖大神的文章
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17482165
昨天在做完涉及用volley获取网页的json格式数据外,我便开始寻找如何用ImageView加载网络图片。查了许多,发现以前加载网络图片的方法都不能用了,主要是由于版本的升级,导入数据图片的获取不能在主线程中进行。
于是,在我查的时候,发现了郭霖大神的volley篇,里面涉及到了用imageRequest来加载网络图片,这里,我先只放关于imageRequest的方法。
以下是转载部分:
在上篇文章中有提到过,Volley是将AsyncHttpClient和Universal-Image-Loader的优点集成于一身的一个框架。我们都知道,Universal-Image-Loader具备非常强大的加载网络图片的功能,而使用Volley,我们也可以实现基本类似的效果,并且在性能上也豪不逊色于Universal-Image-Loader,下面我们就来具体学习一下吧。
1. ImageRequest的用法
前面我们已经学习过了StringRequest和JsonRequest的用法,并且总结出了它们的用法都是非常类似的,基本就是进行以下三步操作即可:
1. 创建一个RequestQueue对象。
2. 创建一个Request对象。
3. 将Request对象添加到RequestQueue里面。
其中,StringRequest和JsonRequest都是继承自Request的,所以它们的用法才会如此类似。那么不用多说,今天我们要学习的ImageRequest,相信你从名字上就已经猜出来了,它也是继承自Request的,因此它的用法也是基本相同的,首先需要获取到一个RequestQueue对象,可以调用如下方法获取到:
- RequestQueue mQueue = Volley.newRequestQueue(context);
- ImageRequest imageRequest = new ImageRequest(
- "http://developer.android.com/images/home/aw_dac.png",
- new Response.Listener<Bitmap>() {
- @Override
- public void onResponse(Bitmap response) {
- imageView.setImageBitmap(response);
- }
- }, 0, 0, Config.RGB_565, new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- imageView.setImageResource(R.drawable.default_image);
- }
- });
最后将这个ImageRequest对象添加到RequestQueue里就可以了,如下所示:
- mQueue.add(imageRequest);
以下是我的感受:在一开始用这个方法的时候觉得特别好用,因为imageRequest这个方法简洁方便,好像没有什么缺点,但是,事实是,不止是imageRequest,JsonRequest都有这个问题,用这个方法有一个最大的缺陷的就是在你在jsonRequest里面的赋值的参数,只是一个局部参数,运行好这个东西以后,赋值的参数就会变回初始状态。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
由于本人是新手,目前正在了解原因,等我了解了,再发布解决办法