本文涉及轉載自郭霖大神的文章
轉載請註明出處: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裏面的賦值的參數,只是一個局部參數,運行好這個東西以後,賦值的參數就會變回初始狀態。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
由於本人是新手,目前正在瞭解原因,等我瞭解了,再發布解決辦法