Volley是一個輕量級的網(wǎng)絡請求框架,主要包括字符串請求、json對象請求、圖片加載和緩存圖片加載四個內(nèi)容。四個方面大致相同。json請求其實也算是字符串請求,我們一般習慣拿到json字符串之后自己去解析。
首先下載volley.jar,把它放到libs,不需要add。

在清單文件中添加權限。
<uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>布局文件幾乎都是按鈕,另加一個圖片控件。
最后就是主程序部分。貼出代碼,一目了然。
public class MainActivity extends AppCompatActivity { RequestQueue requestQueue = null;//請求隊列 @Bind(R.id.btn_string_request) Button btnStringRequest; @Bind(R.id.btn_json_object_request) Button btnJsonObjectRequest; @Bind(R.id.btn_image_request) Button btnImageRequest; @Bind(R.id.btn_image_rloader) Button btnImageRloader; @Bind(R.id.img_icon) ImageView imgIcon; @Override PRotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); requestQueue = Volley.newRequestQueue(this); } @OnClick({R.id.btn_string_request, R.id.btn_json_object_request, R.id.btn_image_request, R.id.btn_image_rloader}) public void onClick(View view) { switch (view.getId()) { case R.id.btn_string_request: stringRequest(); break; case R.id.btn_json_object_request: jsonObjectRequest(); break; case R.id.btn_image_request: imageRequest(); break; case R.id.btn_image_rloader: imageLoad(); break; } } /** * imageLoader緩存加載圖片 */ private void imageLoad() { //請求地址 String url = "http://www.86kx.com/uploads/allimg/161017/2301_161017093243_1.jpg"; ImageLoader imageLoader = new ImageLoader(requestQueue, new MyImageCache()); ImageLoader.ImageListener listener = imageLoader.getImageListener(imgIcon, R.mipmap.ic_launcher, R.mipmap.ic_launcher); imageLoader.get(url, listener, 0, 0); } /** * 自定義圖片緩存 */ private class MyImageCache implements ImageLoader.ImageCache { private LruCache<String, Bitmap> lruCache; private int max = 10 * 1024 * 1024;//緩存大小 public MyImageCache() { lruCache = new LruCache<String, Bitmap>(max) { @Override protected int sizeOf(String key, Bitmap bitmap) { //緩存大小為圖片每一行的字節(jié)數(shù)乘以高度 return bitmap.getRowBytes() * bitmap.getHeight(); } }; } @Override public Bitmap getBitmap(String s) { return lruCache.get(s); } @Override public void putBitmap(String s, Bitmap bitmap) { lruCache.put(s, bitmap); } } /** * 加載網(wǎng)絡圖片 */ private void imageRequest() { //請求地址 String url = "http://www.86kx.com/uploads/allimg/161017/2301_161017093243_1.jpg"; //成功回調 Response.Listener<Bitmap> listener = new Response.Listener<Bitmap>() { @Override public void onResponse(Bitmap bitmap) { imgIcon.setImageBitmap(bitmap); } }; //錯誤回調 Response.ErrorListener errorListener = new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { imgIcon.setImageResource(R.mipmap.ic_launcher); } }; //不帶參數(shù)的請求 ImageRequest imageRequest = new ImageRequest(url, listener, 0, 0, Bitmap.Config.RGB_565, errorListener); requestQueue.add(imageRequest);//加入請求隊列 } /** * 請求json對象 */ private void jsonObjectRequest() { //請求地址 String url = "http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.billboard.billList&type=1&size=10&offset=0"; //成功回調 Response.Listener<JSONObject> listener = new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject s) { Log.i("成功獲得的json字符串", s.toString()); } }; //錯誤回調 Response.ErrorListener errorListener = new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { } }; //不帶參數(shù)的請求 JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, null, listener, errorListener); requestQueue.add(jsonObjectRequest);//加入請求隊列 } /** * 請求字符串 */ private void stringRequest() { //請求地址 String url = "https://www.baidu.com"; //成功回調 Response.Listener<String> listener = new Response.Listener<String>() { @Override public void onResponse(String s) { Log.i("成功獲得的字符串", s); } }; //錯誤回調 Response.ErrorListener errorListener = new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { } }; //不帶參數(shù)的請求 StringRequest stringRequest = new StringRequest(url, listener, errorListener); //帶參數(shù)的請求,這里不進行詳細演示// StringRequest stringRequest2=new StringRequest(Request.Method.POST,url,listener,errorListener){//// @Override// protected Map<String, String> getParams() throws AuthFailureError {// Map<String,String> map=new HashMap<>();// map.put("name","john");// map.put("age","37");// return map;// }// }; requestQueue.add(stringRequest);//加入請求隊列 }}運行結果:
新聞熱點
疑難解答