volley 应用 GET POST请求 图片异步加载(全面)

来源:互联网 发布:网络io 文件系统 编辑:程序博客网 时间:2024/06/05 09:16
http://www.cnblogs.com/freexiaoyu/p/3446028.html
 Volley提供的功能
简单来说,它提供了如下的便利功能:

    JSON,图像等的异步下载;
    网络请求的排序(scheduling)
    网络请求的优先级处理
    缓存
    多级别取消请求
    和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)
  1 package com.example.volleydemo;  2   3 import java.util.HashMap;  4 import java.util.Map;  5   6 import org.json.JSONObject;  7   8 import android.app.Activity;  9 import android.app.ProgressDialog; 10 import android.graphics.Bitmap; 11 import android.os.Bundle; 12 import android.support.v4.util.LruCache; 13 import android.util.Log; 14 import android.widget.ImageView; 15  16 import com.android.volley.Request; 17 import com.android.volley.RequestQueue; 18 import com.android.volley.Response; 19 import com.android.volley.VolleyError; 20 import com.android.volley.toolbox.ImageLoader; 21 import com.android.volley.toolbox.ImageLoader.ImageCache; 22 import com.android.volley.toolbox.ImageLoader.ImageListener; 23 import com.android.volley.toolbox.JsonObjectRequest; 24 import com.android.volley.toolbox.NetworkImageView; 25 import com.android.volley.toolbox.StringRequest; 26 import com.android.volley.toolbox.Volley; 27  28 /** 29  * Demo描述: 1 利用Volley获取JSON数据  2 利用Volley异步加载图片 1 利用NetworkImageView加载网路图片 30  *  31  */ 32 public class MainActivity extends Activity { 33     private ImageView mImageView; 34     private NetworkImageView mNetworkImageView; 35  36     @Override 37     protected void onCreate(Bundle savedInstanceState) { 38         super.onCreate(savedInstanceState); 39         setContentView(R.layout.activity_main); 40         init(); 41     } 42  43     private void init() { 44         mImageView = (ImageView) findViewById(R.id.imageView); 45         mNetworkImageView = (NetworkImageView) findViewById(R.id.networkImageView); 46         getJSONByVolley(); 47         getJsonPost(); 48         loadImageByVolley(); 49         showImageByNetworkImageView(); 50     } 51  52     /** 53      * 利用Volley获取JSON数据 54      */ 55     private void getJSONByVolley() { 56         RequestQueue requestQueue = Volley.newRequestQueue(this); 57         String JSONDataUrl = "http://127.0.0.1:8099/api/api.ashx?action=product_list&ver=1&pageindex=1&pageCount=5"; 58         final ProgressDialog progressDialog = ProgressDialog.show(this, 59                 "请稍后...", "正在加载..."); 60  61         JsonObjectRequest jsonObjectRequest = new JsonObjectRequest( 62                 Request.Method.GET, JSONDataUrl, null, 63                 new Response.Listener<JSONObject>() { 64                     @Override 65                     public void onResponse(JSONObject response) { 66                         //处理返回的JSON数据 67                         Log.e("bbb", response.toString()); 68                         if(progressDialog.isShowing() && progressDialog!=null){  69                           progressDialog.dismiss(); } 70                     } 71                 }, new Response.ErrorListener() { 72                     @Override 73                     public void onErrorResponse(VolleyError arg0) { 74                         // System.out.println("sorry,Error"); 75                         Log.e("aaa", arg0.toString()); 76                     } 77                 }); 78         requestQueue.add(jsonObjectRequest); 79     } 80  81     /*** 82      * 以POST形式加载数据 83      */ 84     private void getJsonPost() { 85         RequestQueue requestQueue = Volley.newRequestQueue(this); 86         String url = "http://127.0.0.1:8099/api/api.ashx"; 87         StringRequest postRequest = new StringRequest(Request.Method.POST, url, 88                 new Response.Listener<String>() { 89                     @Override 90                     public void onResponse(String response) { 91                         //处理返回的JSON数据 92                         Log.d("Response", response); 93                     } 94                 }, new Response.ErrorListener() { 95                     @Override 96                     public void onErrorResponse(VolleyError error) { 97                         // error 98                     } 99                 }) {100             @Override101             protected Map<String, String> getParams() {102                 //POST 参数103                 Map<String, String> params = new HashMap<String, String>();104                 params.put("action", "product_list");105                 params.put("ver", "1");106                 params.put("pageindex", "1");107                 params.put("pageCount", "5");108                 return params;109             }110         };111         requestQueue.add(postRequest);112     }113 114     /**115      * 利用Volley异步加载图片116      * 117      * 注意方法参数: getImageListener(ImageView view, int defaultImageResId, int118      * errorImageResId) 第一个参数:显示图片的ImageView 第二个参数:默认显示的图片资源 第三个参数:加载错误时显示的图片资源119      */120     private void loadImageByVolley() {121         String imageUrl = "http://d.hiphotos.baidu.com/pic/w%3D310/sign=a00aca825aafa40f3cc6c8dc9b65038c/060828381f30e9246b63e1814c086e061c95f7bf.jpg";122         RequestQueue requestQueue = Volley.newRequestQueue(this);123         final LruCache<String, Bitmap> lruCache = new LruCache<String, Bitmap>(124                 20);125         ImageCache imageCache = new ImageCache() {126             @Override127             public void putBitmap(String key, Bitmap value) {128                 lruCache.put(key, value);129             }130 131             @Override132             public Bitmap getBitmap(String key) {133                 return lruCache.get(key);134             }135         };136         ImageLoader imageLoader = new ImageLoader(requestQueue, imageCache);137         ImageListener listener = ImageLoader.getImageListener(mImageView,138                 R.drawable.ic_launcher, R.drawable.ic_launcher);139         imageLoader.get(imageUrl, listener);140     }141 142     /**143      * 利用NetworkImageView显示网络图片144      */145     private void showImageByNetworkImageView() {146         String imageUrl = "http://d.hiphotos.baidu.com/pic/w%3D310/sign=a00aca825aafa40f3cc6c8dc9b65038c/060828381f30e9246b63e1814c086e061c95f7bf.jpg";147         RequestQueue requestQueue = Volley.newRequestQueue(this);148         final LruCache<String, Bitmap> lruCache = new LruCache<String, Bitmap>(149                 20);150         ImageCache imageCache = new ImageCache() {151             @Override152             public void putBitmap(String key, Bitmap value) {153                 lruCache.put(key, value);154             }155 156             @Override157             public Bitmap getBitmap(String key) {158                 return lruCache.get(key);159             }160         };161         ImageLoader imageLoader = new ImageLoader(requestQueue, imageCache);162         mNetworkImageView.setTag("url");163         mNetworkImageView.setImageUrl(imageUrl, imageLoader);164     }165 166 }
复制代码
复制代码
 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"   2     xmlns:tools="http://schemas.android.com/tools"   3     android:layout_width="match_parent"   4     android:layout_height="match_parent"   5      >   6    7     <com.android.volley.toolbox.NetworkImageView   8         android:id="@+id/networkImageView"   9         android:layout_width="fill_parent"  10         android:layout_height="wrap_content"  11         android:layout_centerHorizontal="true"  12         android:layout_marginTop="30dip"  13     />  14       15      <ImageView  16         android:id="@+id/imageView"  17         android:layout_width="fill_parent"  18         android:layout_height="wrap_content"  19         android:layout_centerInParent="true"  20     />  21   22 </RelativeLayout>  
复制代码

引入Volley非常简单,首先,从git库先克隆一个下来:

git clone https://android.googlesource.com/platform/frameworks/volley 

 

然后生成JAR包 引用

下面是我生成好的JAR

引用volley JAR包 下载地址

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 流产了怀不上宝宝怎么办 产妇脸上长斑怎么办 宝贝肚子涨气怎么办 七个月宝宝便秘怎么办 宝宝功能性便秘怎么办 苹果x手机卡了怎么办 宝宝不吃水果蔬菜怎么办 小宝宝不拉粑粑怎么办 小宝宝个子不高怎么办 孩子不开口说话怎么办 孩子吹空调发烧怎么办 孩子上学不想上怎么办 孩子上学想留级怎么办 孩子口算太慢怎么办 孩子浮躁没耐心怎么办 如果孩子打妈妈怎么办 孩子英语成绩不好怎么办 小孩说话发音不准怎么办 小孩gk发音不准怎么办 大学无英语基础怎么办 孩子应用题理解不透怎么办 嫉妒一个人好痛苦怎么办 爱嫉妒别人怎么办心理 总有人嫉妒我怎么办 从小嫉妒闺蜜怎么办 怕闺蜜比我好怎么办 孩子不会做应用题怎么办 当你嫉妒别人怎么办 单位社保发票丢失怎么办 单位医保发票丢失怎么办 图书明细没有给怎么办 拼音拼不到一起怎么办 孩子不会拼拼音怎么办 小孩子不会拼拼音怎么办 小孩拼音发音不准怎么办 孩子声调不会标怎么办 孩子拼音发音不准怎么办 孩子学拼音不会怎么办? 孩子不会拼生字怎么办? 对数字不敏感怎么办 孩子说话不算数怎么办