Volley 框架

本文转载自:https://blog.csdn.net/u011324501/article/details/53933212

Volley可以 自动调度网络请求 多个并发的网络连接 通过使用标准的HTTP缓存机制保持磁盘和内存响应的一致 支持请求优先级 支持取消请求的强大API,可以取消单个请求或多个 易于定制 健壮性:便于正确的更新UI和获取数据 包含调试和追踪工具等优点。

Volley特别适合数据量不大但是通信频繁的场景。

1、首先下载一个volley.jar包导入libs文件下,下载地址http://download.csdn.net/detail/u010049692/7813127

2、新布局代码中添加几个按钮,两个图片按钮和一个textview用于显示数据

[html]  view plain  copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:id="@+id/activity_main"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent"  
  6.     android:orientation="vertical">  
  7.   
  8.     <Button  
  9.         android:id="@+id/volley_get"  
  10.         android:layout_width="match_parent"  
  11.         android:layout_height="wrap_content"  
  12.         android:layout_marginTop="5dip"  
  13.         android:text="get请求" />  
  14.   
  15.     <Button  
  16.         android:id="@+id/volley_post"  
  17.         android:layout_width="match_parent"  
  18.         android:layout_height="wrap_content"  
  19.         android:layout_marginTop="5dip"  
  20.         android:text="post请求" />  
  21.   
  22.     <Button  
  23.         android:id="@+id/volley_json"  
  24.         android:layout_width="match_parent"  
  25.         android:layout_height="wrap_content"  
  26.         android:layout_marginTop="5dip"  
  27.         android:text="请求json数据请求" />  
  28.   
  29.     <Button  
  30.         android:id="@+id/volley_imageRequest"  
  31.         android:layout_width="match_parent"  
  32.         android:layout_height="wrap_content"  
  33.         android:layout_marginTop="5dip"  
  34.         android:text="imageRequest加载图片" />  
  35.   
  36.     <Button  
  37.         android:id="@+id/volley_imageLader"  
  38.         android:layout_width="match_parent"  
  39.         android:layout_height="wrap_content"  
  40.         android:layout_marginTop="5dip"  
  41.         android:text="imageLader加载图片" />  
  42.   
  43.     <Button  
  44.         android:id="@+id/netWorkImageView"  
  45.         android:layout_width="match_parent"  
  46.         android:layout_height="wrap_content"  
  47.         android:layout_marginTop="5dip"  
  48.         android:text="netWorkImageView" />  
  49.   
  50.     <TextView  
  51.         android:layout_width="match_parent"  
  52.         android:layout_height="wrap_content"  
  53.         android:layout_marginTop="5dip"  
  54.         android:text="显示结果" />  
  55.   
  56.     <ImageView  
  57.         android:id="@+id/volley_image"  
  58.         android:layout_width="wrap_content"  
  59.         android:layout_height="wrap_content"  
  60.         android:layout_marginTop="5dip" />  
  61.   
  62.     <com.facebook.drawee.view.SimpleDraweeView  
  63.         android:id="@+id/volley_imageNet"  
  64.         android:layout_width="wrap_content"  
  65.         android:layout_height="wrap_content"  
  66.         android:layout_marginTop="5dip" />  
  67.   
  68.     <ScrollView  
  69.         android:layout_width="match_parent"  
  70.         android:layout_height="match_parent"  
  71.         android:layout_marginTop="5dip">  
  72.   
  73.         <TextView  
  74.             android:id="@+id/volley_result"  
  75.             android:layout_width="match_parent"  
  76.             android:layout_height="wrap_content"  
  77.             android:text="" />  
  78.   
  79.     </ScrollView>  
  80. </LinearLayout>  
3、由于要显示网络图片,所以添加fresco,需要在build.gradle 中添加下面代码,并在需要在新建一个MyApplication类,记得在权限中添加。还要添加网络权限代码
[html]  view plain  copy
  1. compile 'com.facebook.fresco:fresco:0.12.0'  
[html]  view plain  copy
  1. package com.example.apple.volley;  
  2.   
  3. import android.app.Application;  
  4.   
  5. import com.facebook.drawee.backends.pipeline.Fresco;  
  6.   
  7. /**  
  8.  * Created by apple on 16/12/29.  
  9.  */  
  10.   
  11. public class MyApplication extends Application {  
  12.     public MyApplication() {  
  13.         super();  
  14.     }  
  15.   
  16.     @Override  
  17.     public void onCreate() {  
  18.         super.onCreate();  
  19.   
  20.         //Fresco初始化  
  21.         Fresco.initialize(getApplicationContext());  
  22.     }  
  23. }  

[html]  view plain  copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="com.example.apple.volley">  
  4.     <uses-permission android:name="android.permission.INTERNET" />  
  5.     <application  
  6.         android:name=".MyApplication"  
  7.         android:allowBackup="true"  
  8.         android:icon="@mipmap/ic_launcher"  
  9.         android:label="@string/app_name"  
  10.         android:supportsRtl="true"  
  11.         android:theme="@style/AppTheme">  
  12.         <activity android:name=".MainActivity">  
  13.             <intent-filter>  
  14.                 <action android:name="android.intent.action.MAIN" />  
  15.   
  16.                 <category android:name="android.intent.category.LAUNCHER" />  
  17.             </intent-filter>  
  18.         </activity>  
  19.     </application>  
  20. </manifest>  
4、先实现get 请求,首先创建一个队列,然后创建一个请求,将url传进去,请求中有两个方法,当正确接受数据时可以打印出来,错误时也可以显示出来,最后添加到队列中,这就完成了get请求。返回的数据可自己处理。

[html]  view plain  copy
  1. /**  
  2.    * get  
  3.    */  
  4.   public void get(){  
  5.       //创建一个请求队列  
  6.       requestQueue = Volley.newRequestQueue(MainActivity.this);  
  7.       //创建一个请求  
  8.       String url = "http://api.m.mtime.cn/PageSubArea/TrailerList.api";  
  9.   
  10.       StringRequest stringRequest =new StringRequest(url, new Response.Listener<String>() {  
  11.           //正确接收数据回调  
  12.           @Override  
  13.           public void onResponse(String s) {  
  14.   
  15.               try {  
  16.                   JSONObject jsonObject = new JSONObject(s);  
  17.                  // TestData testDatanew Gson().fromJson(s, TestData.class);  
  18.                  // Log.e(TAG,"length="+jsonObject.getJSONObject("trailers").length());  
  19.                //   for (int i = 0;i<jsonObject.getJSONObject("trailers").length();i++){  
  20.                       volley_result.setText(s);  
  21.                       Log.e(TAG,"s="+jsonObject.getJSONArray("trailers").get(0)+"\n");  
  22.                  // }  
  23.   
  24.               } catch (JSONException e) {  
  25.                   e.printStackTrace();  
  26.               }  
  27.   
  28.           }  
  29.       }, new Response.ErrorListener() {//异常后的监听数据  
  30.           @Override  
  31.           public void onErrorResponse(VolleyError volleyError) {  
  32.               volley_result.setText("加载错误"+volleyError);  
  33.           }  
  34.       });  
  35.       //将get请求添加到队列中  
  36.       requestQueue.add(stringRequest);  
  37.   }  

5、实现post请求,post请求跟get差不多,都要创建一个队列,然后创建一个请求,再添加到队列中,不同的是,需要在创建请求时声明是POST,传入参数时可以用Map,然后返回。
[html]  view plain  copy
  1. private void post(){  
  2.         //创建一个请求队列  
  3.          requestQueue = Volley.newRequestQueue(MainActivity.this);  
  4.         //创建一个请求  
  5.         String url = "http://api.m.mtime.cn/PageSubArea/TrailerList.api";  
  6.   
  7.         StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {  
  8.             @Override  
  9.             public void onResponse(String s) {  
  10.                 volley_result.setText(s);  
  11.             }  
  12.   
  13.         }, new Response.ErrorListener() {  
  14.             @Override  
  15.             public void onErrorResponse(VolleyError volleyError) {  
  16.                 volley_result.setText("加载错误"+volleyError);  
  17.             }  
  18.         }){  
  19.             @Override  
  20.             protected Map<String, String> getParams() throws AuthFailureError {  
  21.   
  22.                 Map<String,String> map = new HashMap<>();  
  23.                // map.put("value1","param1");//传入参数  
  24.   
  25.                 return map;  
  26.             }  
  27.         };  
  28.   
  29.         //将post请求添加到队列中  
  30.         requestQueue.add(stringRequest);  
  31.     }  

6、json请求,跟上面基本一样,但是如果数据格式外面时{}需要用JsonObjectRequest,如果时[]则要用JsonArrayRequest,返回的是JSONObject数据。

[html]  view plain  copy
  1. private void json(){  
  2.        //创建一个请求队列  
  3.         requestQueue = Volley.newRequestQueue(MainActivity.this);  
  4.   
  5.        //创建一个请求  
  6.        String url = "http://api.m.mtime.cn/PageSubArea/TrailerList.api";  
  7.        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, null, new Response.Listener<JSONObject>() {  
  8.            @Override  
  9.            public void onResponse(JSONObject jsonObject) {  
  10.                //TestData data = new Gson().fromJson(String.valueOf(jsonObject),TestData.class);  
  11.                volley_result.setText(jsonObject.toString());  
  12.                Log.e(TAG,"data="+jsonObject);  
  13.            }  
  14.        }, new Response.ErrorListener() {  
  15.            @Override  
  16.            public void onErrorResponse(VolleyError volleyError) {  
  17.                volley_result.setText("加载错误"+volleyError);  
  18.   
  19.            }  
  20.        });  
  21.   
  22.        //将创建的请求添加到队列中  
  23.        requestQueue.add(jsonObjectRequest);  
  24.    }  

7、加载图片,也是需要那三步,但是是用ImageRequest。

[html]  view plain  copy
  1. /**  
  2.     * 加载图片  
  3.     */  
  4.    private void image(){  
  5.        //创建一个请求队列  
  6.         requestQueue = Volley.newRequestQueue(MainActivity.this);  
  7.   
  8.        //创建一个请求  
  9.        String url = "http://img5.mtime.cn/mg/2016/12/26/164311.99230575.jpg";  
  10.        //第二个参数,第三个:宽高,第四个:图片质量  
  11.        ImageRequest imageRequest = new ImageRequest(url, new Response.Listener<Bitmap>() {  
  12.            @Override  
  13.            public void onResponse(Bitmap bitmap) {  
  14.                //正确接收图片  
  15.                volley_image.setImageBitmap(bitmap);  
  16.            }  
  17.        }, 0, 0, Bitmap.Config.RGB_565, new Response.ErrorListener() {  
  18.            @Override  
  19.            public void onErrorResponse(VolleyError volleyError) {  
  20.                volley_image.setImageResource(R.mipmap.ic_launcher);  
  21.            }  
  22.        });  
  23.   
  24.        //将创建的请求添加到队列中  
  25.        requestQueue.add(imageRequest);  
  26.    }  
8、加载网络图片,这个可以新建一个BitmapCache类用来缓存图片

[html]  view plain  copy
  1. private void imageLoader(){  
  2.         //创建一个请求队列  
  3.          requestQueue = Volley.newRequestQueue(MainActivity.this);  
  4.   
  5.         //创建一个请求  
  6.   
  7. //        ImageLoader imageLoader = new ImageLoader(requestQueue, new ImageLoader.ImageCache() {  
  8. //            @Override  
  9. //            public Bitmap getBitmap(String s) {  
  10. //                return null;  
  11. //            }  
  12. //  
  13. //            @Override  
  14. //            public void putBitmap(String s, Bitmap bitmap) {  
  15. //  
  16. //            }  
  17. //        });  
  18.   
  19.         ImageLoader imageLoader = new ImageLoader(requestQueue,new BitmapCache());//带缓存  
  20.   
  21.         //加载图片  
  22.         String url = "http://img5.mtime.cn/mg/2016/12/26/164311.99230575.jpg";  
  23.         //加载不到,加载失败  
  24.         ImageLoader.ImageListener imageLister = ImageLoader.getImageListener(volley_imageNet,R.mipmap.ic_launcher,R.mipmap.ic_launcher);  
  25.         imageLoader.get(url,imageLister);  
  26.     }  
[html]  view plain  copy
  1. package com.example.apple.volley.entity;  
  2.   
  3. import android.graphics.Bitmap;  
  4. import android.util.LruCache;  
  5.   
  6. import com.android.volley.toolbox.ImageLoader;  
  7.   
  8. /**  
  9.  * Created by apple on 16/12/29.  
  10.  * 图片缓存  
  11.  */  
  12.   
  13. public class BitmapCache implements ImageLoader.ImageCache{  
  14.   
  15.     private LruCache<String,Bitmap> mCache;  
  16.   
  17.     public BitmapCache() {  
  18.         int maxSize = 10* 1024 *1024;//10m  
  19.         mCache = new LruCache<String,Bitmap>(maxSize){  
  20.             @Override  
  21.             protected int sizeOf(String key, Bitmap bitmap) {  
  22.                 return bitmap.getRowBytes() * bitmap.getHeight();  
  23.             }  
  24.         };  
  25.     }  
  26.   
  27.     @Override  
  28.     public Bitmap getBitmap(String url) {  
  29.         return mCache.get(url);  
  30.     }  
  31.   
  32.     @Override  
  33.     public void putBitmap(String url, Bitmap bitmap) {  
  34.         mCache.put(url,bitmap);  
  35.     }  
  36. }  
10、加载网络图片
[html]  view plain  copy
  1. /**  
  2.      * netWorkImageView  
  3.      */  
  4.     private void netWorkImageView(){  
  5.         //创建一个请求队列  
  6.          requestQueue = Volley.newRequestQueue(MainActivity.this);  
  7.   
  8.         //创建一个imageLoader  
  9.         ImageLoader imageLoader = new ImageLoader(requestQueue,new BitmapCache());  
  10.   
  11.         //默认图片设置  
  12.         volley_imageNet.setImageResource(R.mipmap.ic_launcher);  
  13.   
  14.         //加载图片  
  15.         String url = "http://img5.mtime.cn/mg/2016/12/26/164311.99230575.jpg";  
  16.         volley_imageNet.setImageURI(url,imageLoader);  
  17.     }  
11、最后可以在stop中添加取消所有队列

[html]  view plain  copy
  1. @Override  
  2.     protected void onStop() {  
  3.         super.onStop();  
  4.         //取消队列里所有的请求  
  5.         requestQueue.cancelAll(this);  
  6.   
  7.     }  

完整代码:

[html]  view plain  copy
  1. package com.example.apple.volley;  
  2.   
  3. import android.graphics.Bitmap;  
  4. import android.support.v7.app.AppCompatActivity;  
  5. import android.os.Bundle;  
  6. import android.util.Log;  
  7. import android.view.View;  
  8. import android.widget.Button;  
  9. import android.widget.ImageView;  
  10. import android.widget.TextView;  
  11.   
  12. import com.android.volley.AuthFailureError;  
  13. import com.android.volley.Request;  
  14. import com.android.volley.RequestQueue;  
  15. import com.android.volley.Response;  
  16. import com.android.volley.VolleyError;  
  17. import com.android.volley.toolbox.ImageLoader;  
  18. import com.android.volley.toolbox.ImageRequest;  
  19. import com.android.volley.toolbox.JsonObjectRequest;  
  20. import com.android.volley.toolbox.StringRequest;  
  21. import com.android.volley.toolbox.Volley;  
  22. import com.example.apple.volley.entity.BitmapCache;  
  23. import com.facebook.drawee.view.SimpleDraweeView;  
  24.   
  25. import org.json.JSONException;  
  26. import org.json.JSONObject;  
  27.   
  28. import java.util.HashMap;  
  29. import java.util.Map;  
  30.   
  31. /**  
  32.  * JSON,图像等的异步下载;  
  33.  网络请求的排序(scheduling)  
  34.  网络请求的优先级处理  
  35.  缓存  
  36.  多级别取消请求  
  37.  和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)  
  38.  */  
  39. public class MainActivity extends AppCompatActivity implements View.OnClickListener{  
  40.   
  41.     private Button volley_get;  
  42.     private Button volley_post;  
  43.     private Button volley_json;  
  44.     private Button volley_imageRequest;  
  45.     private Button volley_imageLader;  
  46.     private Button netWorkImageView;  
  47.     private ImageView volley_image;  
  48.     private SimpleDraweeView volley_imageNet;  
  49.     private TextView volley_result;  
  50.     private final String TAG = "MainActivity";  
  51.   
  52.     RequestQueue requestQueue;  
  53.   
  54.     @Override  
  55.     protected void onCreate(Bundle savedInstanceState) {  
  56.         super.onCreate(savedInstanceState);  
  57.         setContentView(R.layout.activity_main);  
  58.   
  59.         initView();  
  60.     }  
  61.   
  62.     private void initView() {  
  63.         volley_get = (Button)findViewById(R.id.volley_get);  
  64.         volley_get.setOnClickListener(this);  
  65.   
  66.         volley_post = (Button)findViewById(R.id.volley_post);  
  67.         volley_post.setOnClickListener(this);  
  68.   
  69.         volley_json = (Button)findViewById(R.id.volley_json);  
  70.         volley_json.setOnClickListener(this);  
  71.   
  72.         volley_imageRequest = (Button)findViewById(R.id.volley_imageRequest);  
  73.         volley_imageRequest.setOnClickListener(this);  
  74.   
  75.         volley_imageLader = (Button)findViewById(R.id.volley_imageLader);  
  76.         volley_imageLader.setOnClickListener(this);  
  77.   
  78.         netWorkImageView = (Button)findViewById(R.id.netWorkImageView);  
  79.         netWorkImageView.setOnClickListener(this);  
  80.   
  81.         volley_image = (ImageView) findViewById(R.id.volley_image);  
  82.   
  83.         volley_imageNet = (SimpleDraweeView) findViewById(R.id.volley_imageNet);  
  84.   
  85.         volley_result = (TextView)findViewById(R.id.volley_result);  
  86.     }  
  87.   
  88.     @Override  
  89.     public void onClick(View v) {  
  90.         switch (v.getId()){  
  91.   
  92.             case R.id.volley_get://get请求  
  93.   
  94.                 get();  
  95.   
  96.                 break;  
  97.   
  98.             case R.id.volley_post://post请求  
  99.   
  100.                 post();  
  101.                 break;  
  102.   
  103.             case R.id.volley_json://json请求 JsonObjectRequest{} JsonArrayRequest[]  
  104.   
  105.                 json();  
  106.                 break;  
  107.   
  108.             case R.id.volley_imageRequest://imageRequest加载图片  
  109.   
  110.                 image();  
  111.                 break;  
  112.   
  113.             case R.id.volley_imageLader://imageLader加载图片  
  114.                 imageLoader();  
  115.   
  116.                 break;  
  117.   
  118.             case R.id.netWorkImageView:  
  119.                     netWorkImageView();  
  120.                 break;  
  121.   
  122.             default:  
  123.                 break;  
  124.   
  125.         }  
  126.     }  
  127.   
  128.     /**  
  129.      * get  
  130.      */  
  131.     public void get(){  
  132.         //创建一个请求队列  
  133.         requestQueue = Volley.newRequestQueue(MainActivity.this);  
  134.         //创建一个请求  
  135.         String url = "http://api.m.mtime.cn/PageSubArea/TrailerList.api";  
  136.   
  137.         StringRequest stringRequest =new StringRequest(url, new Response.Listener<String>() {  
  138.             //正确接收数据回调  
  139.             @Override  
  140.             public void onResponse(String s) {  
  141.   
  142.                 try {  
  143.                     JSONObject jsonObject = new JSONObject(s);  
  144.                    // TestData testDatanew Gson().fromJson(s, TestData.class);  
  145.                    // Log.e(TAG,"length="+jsonObject.getJSONObject("trailers").length());  
  146.                  //   for (int i = 0;i<jsonObject.getJSONObject("trailers").length();i++){  
  147.                         volley_result.setText(s);  
  148.                         Log.e(TAG,"s="+jsonObject.getJSONArray("trailers").get(0)+"\n");  
  149.                    // }  
  150.   
  151.                 } catch (JSONException e) {  
  152.                     e.printStackTrace();  
  153.                 }  
  154.   
  155.             }  
  156.         }, new Response.ErrorListener() {//异常后的监听数据  
  157.             @Override  
  158.             public void onErrorResponse(VolleyError volleyError) {  
  159.                 volley_result.setText("加载错误"+volleyError);  
  160.             }  
  161.         });  
  162.         //将get请求添加到队列中  
  163.         requestQueue.add(stringRequest);  
  164.     }  
  165.   
  166.     /**  
  167.      * post  
  168.      */  
  169.     private void post(){  
  170.         //创建一个请求队列  
  171.          requestQueue = Volley.newRequestQueue(MainActivity.this);  
  172.         //创建一个请求  
  173.         String url = "http://api.m.mtime.cn/PageSubArea/TrailerList.api";  
  174.   
  175.         StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {  
  176.             @Override  
  177.             public void onResponse(String s) {  
  178.                 volley_result.setText(s);  
  179.             }  
  180.   
  181.         }, new Response.ErrorListener() {  
  182.             @Override  
  183.             public void onErrorResponse(VolleyError volleyError) {  
  184.                 volley_result.setText("加载错误"+volleyError);  
  185.             }  
  186.         }){  
  187.             @Override  
  188.             protected Map<String, String> getParams() throws AuthFailureError {  
  189.   
  190.                 Map<String,String> map = new HashMap<>();  
  191.                // map.put("value1","param1");//传入参数  
  192.   
  193.                 return map;  
  194.             }  
  195.         };  
  196.   
  197.         //将post请求添加到队列中  
  198.         requestQueue.add(stringRequest);  
  199.     }  
  200.   
  201.     /**  
  202.      * json  
  203.      */  
  204.     private void json(){  
  205.         //创建一个请求队列  
  206.          requestQueue = Volley.newRequestQueue(MainActivity.this);  
  207.   
  208.         //创建一个请求  
  209.         String url = "http://api.m.mtime.cn/PageSubArea/TrailerList.api";  
  210.         JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, null, new Response.Listener<JSONObject>() {  
  211.             @Override  
  212.             public void onResponse(JSONObject jsonObject) {  
  213.   
  214.                 //TestData data = new Gson().fromJson(String.valueOf(jsonObject),TestData.class);  
  215.   
  216.                 volley_result.setText(jsonObject.toString());  
  217.   
  218.   
  219.                 Log.e(TAG,"data="+jsonObject);  
  220.             }  
  221.         }, new Response.ErrorListener() {  
  222.             @Override  
  223.             public void onErrorResponse(VolleyError volleyError) {  
  224.                 volley_result.setText("加载错误"+volleyError);  
  225.   
  226.             }  
  227.         });  
  228.   
  229.         //将创建的请求添加到队列中  
  230.         requestQueue.add(jsonObjectRequest);  
  231.     }  
  232.   
  233.     /**  
  234.      * 加载图片  
  235.      */  
  236.     private void image(){  
  237.         //创建一个请求队列  
  238.          requestQueue = Volley.newRequestQueue(MainActivity.this);  
  239.   
  240.         //创建一个请求  
  241.         String url = "http://img5.mtime.cn/mg/2016/12/26/164311.99230575.jpg";  
  242.         //第二个参数,第三个:宽高,第四个:图片质量  
  243.         ImageRequest imageRequest = new ImageRequest(url, new Response.Listener<Bitmap>() {  
  244.             @Override  
  245.             public void onResponse(Bitmap bitmap) {  
  246.                 //正确接收图片  
  247.                 volley_image.setImageBitmap(bitmap);  
  248.             }  
  249.         }, 0, 0, Bitmap.Config.RGB_565, new Response.ErrorListener() {  
  250.             @Override  
  251.             public void onErrorResponse(VolleyError volleyError) {  
  252.                 volley_image.setImageResource(R.mipmap.ic_launcher);  
  253.             }  
  254.         });  
  255.   
  256.         //将创建的请求添加到队列中  
  257.         requestQueue.add(imageRequest);  
  258.     }  
  259.   
  260.     /**  
  261.      * imageLoader  
  262.      */  
  263.     private void imageLoader(){  
  264.         //创建一个请求队列  
  265.          requestQueue = Volley.newRequestQueue(MainActivity.this);  
  266.   
  267.         //创建一个请求  
  268.   
  269. //        ImageLoader imageLoader = new ImageLoader(requestQueue, new ImageLoader.ImageCache() {  
  270. //            @Override  
  271. //            public Bitmap getBitmap(String s) {  
  272. //                return null;  
  273. //            }  
  274. //  
  275. //            @Override  
  276. //            public void putBitmap(String s, Bitmap bitmap) {  
  277. //  
  278. //            }  
  279. //        });  
  280.   
  281.         ImageLoader imageLoader = new ImageLoader(requestQueue,new BitmapCache());//带缓存  
  282.   
  283.         //加载图片  
  284.         String url = "http://img5.mtime.cn/mg/2016/12/26/164311.99230575.jpg";  
  285.         //加载不到,加载失败  
  286.         ImageLoader.ImageListener imageLister = imageLoader.getImageListener(volley_imageNet,R.mipmap.ic_launcher,R.mipmap.ic_launcher);  
  287.         imageLoader.get(url,imageLister);  
  288.     }  
  289.   
  290.     /**  
  291.      * netWorkImageView  
  292.      */  
  293.     private void netWorkImageView(){  
  294.         //创建一个请求队列  
  295.          requestQueue = Volley.newRequestQueue(MainActivity.this);  
  296.   
  297.         //创建一个imageLoader  
  298.         ImageLoader imageLoader = new ImageLoader(requestQueue,new BitmapCache());  
  299.   
  300.         //默认图片设置  
  301.         volley_imageNet.setImageResource(R.mipmap.ic_launcher);  
  302.   
  303.         //加载图片  
  304.         String url = "http://img5.mtime.cn/mg/2016/12/26/164311.99230575.jpg";  
  305.         volley_imageNet.setImageURI(url,imageLoader);  
  306.     }  
  307.   
  308.     @Override  
  309.     protected void onStop() {  
  310.         super.onStop();  
  311.         //取消队列里所有的请求  
  312.         requestQueue.cancelAll(this);  
  313.   
  314.     }  
  315.   
  316.     @Override  
  317.     protected void onDestroy() {  
  318.         super.onDestroy();  
  319.     }  
  320. }  
实现效果图片和代码下载地址: http://download.csdn.net/detail/u011324501/9725043






  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值