zoukankan      html  css  js  c++  java
  • volley 应用 GET POST请求 图片异步加载

      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             @Override
    101             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, int
    118      * 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             @Override
    127             public void putBitmap(String key, Bitmap value) {
    128                 lruCache.put(key, value);
    129             }
    130 
    131             @Override
    132             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             @Override
    152             public void putBitmap(String key, Bitmap value) {
    153                 lruCache.put(key, value);
    154             }
    155 
    156             @Override
    157             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 }
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
        xmlns:tools="http://schemas.android.com/tools"  
        android:layout_width="match_parent"  
        android:layout_height="match_parent"  
         >  
      
        <com.android.volley.toolbox.NetworkImageView  
            android:id="@+id/networkImageView"  
            android:layout_width="fill_parent"  
            android:layout_height="wrap_content"  
            android:layout_centerHorizontal="true"  
            android:layout_marginTop="30dip"  
        />  
          
         <ImageView  
            android:id="@+id/imageView"  
            android:layout_width="fill_parent"  
            android:layout_height="wrap_content"  
            android:layout_centerInParent="true"  
        />  
      
    </RelativeLayout>

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

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

    然后生成JAR包 引用

    下面是我生成好的JAR

    引用volley JAR包 下载地址

    结合GSON和fastJson用法

    http://www.cnblogs.com/freexiaoyu/p/3955137.html

  • 相关阅读:
    fastadmin的会员中心和cms插件,两者整合在一起。界面上怎么整合啊?
    thinkphp5框架中为啥要使用traits
    TP5三足鼎力的目录结构,以及相关的文件位置
    tp5 如何创建公共函数
    PSR4自动加载
    关于js中循环遍历中顺序执行ajax的问题(vue)
    laravel+vue+vuetify 前端匹配不到数据记录 No matching records found
    mysql表中时间timestamp设计
    基本语法
    leetcode——1382. 将二叉搜索树变平衡
  • 原文地址:https://www.cnblogs.com/jasonxcj/p/4928678.html
Copyright © 2011-2022 走看看