首页 > 代码库 > Android利用Volley异步加载数据(JSON和图片)完整示例

Android利用Volley异步加载数据(JSON和图片)完整示例

 

Android利用Volley异步加载数据(JSON和图片)完整示例

 

MainActivity.java

package cc.testvolley;    import org.json.JSONObject; import android.app.Activity; import android.app.ProgressDialog; import android.graphics.Bitmap; import android.os.Bundle; import android.support.v4.util.LruCache; import android.widget.ImageView; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.ImageLoader; import com.android.volley.toolbox.ImageLoader.ImageCache; import com.android.volley.toolbox.ImageLoader.ImageListener; import com.android.volley.toolbox.JsonObjectRequest; import com.android.volley.toolbox.NetworkImageView; import com.android.volley.toolbox.Volley;    /** * Demo描述:  * 1 利用Volley获取JSON数据 * 2 利用Volley异步加载图片 * 1 利用NetworkImageView加载网路图片 *  * 参考资料: * 1 http://blog.csdn.net/t12x3456/article/details/9221611 * 2 http://blog.csdn.net/xyz_lmn/article/details/12063561 * 3 http://blog.csdn.net/lfdfhl/article/details/12221875 *   Thank you very much */ public class MainActivity extends Activity {     private ImageView mImageView;     private NetworkImageView mNetworkImageView;     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);         init();     }            private void init(){         mImageView=(ImageView) findViewById(R.id.imageView);         mNetworkImageView=(NetworkImageView)findViewById(R.id.networkImageView);         getJSONByVolley();         loadImageByVolley();         showImageByNetworkImageView();     }        /**     * 利用Volley获取JSON数据     */     private void getJSONByVolley() {         RequestQueue requestQueue = Volley.newRequestQueue(this);         String JSONDataUrl = "http://pipes.yahooapis.com/pipes/pipe.run?_id=giWz8Vc33BG6rQEQo_NLYQ&_render=json";         final ProgressDialog progressDialog = ProgressDialog.show(this, "This is title", "...Loading...");            JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(                 Request.Method.GET,                  JSONDataUrl,                  null,                 new Response.Listener<JSONObject>() {                     @Override                     public void onResponse(JSONObject response) {                         System.out.println("response="+response);                         if (progressDialog.isShowing()&&progressDialog!=null) {                             progressDialog.dismiss();                         }                     }                 },                  new Response.ErrorListener() {                     @Override                     public void one rrorResponse(VolleyError arg0) {                            System.out.println("sorry,Error");                     }                 });         requestQueue.add(jsonObjectRequest);     }                   /**     * 利用Volley异步加载图片     *      * 注意方法参数:     * getImageListener(ImageView view, int defaultImageResId, int errorImageResId)     * 第一个参数:显示图片的ImageView     * 第二个参数:默认显示的图片资源     * 第三个参数:加载错误时显示的图片资源     */     private void loadImageByVolley(){         String imageUrl="http://avatar.csdn.net/6/6/D/1_lfdfhl.jpg";         RequestQueue requestQueue = Volley.newRequestQueue(this);         final LruCache<String, Bitmap> lruCache = new LruCache<String, Bitmap>(20);         ImageCache imageCache = new ImageCache() {             @Override             public void putBitmap(String key, Bitmap value) {                 lruCache.put(key, value);             }                @Override             public Bitmap getBitmap(String key) {                 return lruCache.get(key);             }         };         ImageLoader imageLoader = new ImageLoader(requestQueue, imageCache);         ImageListener listener = ImageLoader.getImageListener(mImageView, R.drawable.ic_launcher,R.drawable.ic_launcher);         imageLoader.get(imageUrl, listener);     }            /**     * 利用NetworkImageView显示网络图片     */     private void showImageByNetworkImageView(){         String imageUrl="http://avatar.csdn.net/6/6/D/1_lfdfhl.jpg";         RequestQueue requestQueue = Volley.newRequestQueue(this);         final LruCache<String, Bitmap> lruCache = new LruCache<String, Bitmap>(20);         ImageCache imageCache = new ImageCache() {             @Override             public void putBitmap(String key, Bitmap value) {                 lruCache.put(key, value);             }                @Override             public Bitmap getBitmap(String key) {                 return lruCache.get(key);             }         };         ImageLoader imageLoader = new ImageLoader(requestQueue, imageCache);         mNetworkImageView.setTag("url");         mNetworkImageView.setImageUrl(imageUrl,imageLoader);     }    }

 

main.xml:

<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="120dip"         android:layout_height="120dip"         android:layout_centerHorizontal="true"         android:layout_marginTop="30dip"     />             <ImageView         android:id="@+id/imageView"         android:layout_width="120dip"         android:layout_height="120dip"         android:layout_centerInParent="true"     />    </RelativeLayout>

  

Android利用Volley异步加载数据(JSON和图片)完整示例