Volley程序集合(使用单例,保证只会创建一个队列)

程序单例程序package com.test.myvolleytest;import android.annotation.TargetApi;import android.content.Context;import android.graphics.Bitmap;import android.os.Build;import android.util.LruCache;import com.android.volley.Request;import com.android.volley.RequestQueue;import com.android.volley.toolbox.ImageLoader;import com.android.volley.toolbox.Volley;/** * Created by zhonghangIT on 2015/9/14. */@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1){private static MySingleton mInstance;private RequestQueue mRequestQueue;private ImageLoader mImageLoader;private static Context mCtx;private MySingleton(Context context) {mCtx = context;mRequestQueue = getRequestQueue();mImageLoader = new ImageLoader(mRequestQueue,new ImageLoader.ImageCache() {private final LruCache<String, Bitmap>cache = new LruCache<String, Bitmap>(20);@Overridepublic Bitmap getBitmap(String url) {return cache.get(url);}(String url, Bitmap bitmap) {cache.put(url, bitmap);}});}MySingleton getInstance(Context context) {if (mInstance == null) {mInstance = new MySingleton(context);}return mInstance;}public RequestQueue getRequestQueue() {if (mRequestQueue == null) {// getApplicationContext() is key, it keeps you from leaking the// Activity or BroadcastReceiver if someone passes one in.mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext());}return mRequestQueue;}public <T> void addToRequestQueue(Request<T> req) {getRequestQueue().add(req);}public ImageLoader getImageLoader() {return mImageLoader;}}主程序package com.test.myvolleytest;import android.support.v7.app.ActionBarActivity;import android.util.Log;import org.json.JSONObject;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.ImageRequest;import com.android.volley.toolbox.JsonObjectRequest;import com.android.volley.toolbox.NetworkImageView;import com.android.volley.toolbox.StringRequest;import com.android.volley.toolbox.Volley;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;{private Button mButton;private Button mButtonJson;private Button mButtonImageRequest;private Button mButtonImageLoader;private Button mButtonNetWorkImageView;private NetworkImageView mNetworkImageView;private ImageView imageView;(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mButton = (Button) findViewById(R.id.button);mButton.setOnClickListener(this);mButtonJson=(Button) findViewById(R.id.button_json);mButtonJson.setOnClickListener(this);mButtonImageRequest=(Button) findViewById(R.id.button_imagerequest);mButtonImageRequest.setOnClickListener(this);mButtonImageLoader=(Button) findViewById(R.id.button_imageloder);mButtonImageLoader.setOnClickListener(this);mButtonNetWorkImageView=(Button) findViewById(R.id.button_networkimageview);mButtonNetWorkImageView.setOnClickListener(this);imageView=(ImageView) findViewById(R.id.image);mNetworkImageView=(NetworkImageView) findViewById(R.id.network_image_view);}(View v) {switch (v.getId()) {case R.id.button:StringRequest stringRequest = new StringRequest(Request.Method.GET,”http://www.baidu.com”, new Response.Listener<String>() {(String response) {Log.d(“TAG”, response);}}, new Response.ErrorListener() {(VolleyError arg0) {Log.e(“TAG”, arg0.getMessage(), arg0);}});//使用单例设计模式MySingleton.getInstance(getApplicationContext()).addToRequestQueue(stringRequest);break;case R.id.button_json:RequestQueue mQueue2 = Volley.newRequestQueue(MainActivity.this);//需要JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(“http://www.weather.com.cn/adat/sk/101010100.html”, null,new Response.Listener<JSONObject>() {(JSONObject response) {Log.d(“TAG”, response.toString());}}, new Response.ErrorListener() {(VolleyError error) {Log.e(“TAG”, error.getMessage(), error);}});mQueue2.add(jsonObjectRequest);break;case R.id.button_imagerequest://加入了图片RequestQueue mQueue3 = Volley.newRequestQueue(MainActivity.this);@SuppressWarnings(“deprecation”)ImageRequest imageRequest = new ImageRequest(“http://pic1.nipic.com/2008-09-08/200898163242920_2.jpg”,new Response.Listener<Bitmap>() {(Bitmap response) {imageView.setImageBitmap(response);}}, 0, 0, Config.RGB_565, new Response.ErrorListener() {(VolleyError error) {imageView.setImageResource(R.drawable.ic_launcher);}});mQueue3.add(imageRequest);break;case R.id.button_imageloder:RequestQueue mQueue4 = Volley.newRequestQueue(MainActivity.this);//BitmapCache为缓存图片机制,图片缓存加载,因为一般缓存为24M所以使用缓存保证能加载更多的图片。ImageLoader imageLoader = new ImageLoader(mQueue4, new BitmapCache());//第一个图片为默认图片,第二个图片为加载失败的图片ImageListener listener = ImageLoader.getImageListener(imageView,R.drawable.a, R.drawable.ic_launcher);imageLoader.get(“http://pic1.nipic.com/2008-09-08/200898163242920_2.jpg”,listener, 200, 200);break;case R.id.button_networkimageview://不经常使用,,用另一种ImagerLoder代替RequestQueue mQueue5 = Volley.newRequestQueue(MainActivity.this);ImageLoader imageLoader2 = new ImageLoader(mQueue5, new BitmapCache());mNetworkImageView.setDefaultImageResId(R.drawable.a);mNetworkImageView.setErrorImageResId(R.drawable.ic_launcher);mNetworkImageView.setImageUrl(“http://img.my.csdn.net/uploads/201404/13/1397393290_5765.jpeg”,imageLoader2);break;default:break;}}}BitMapCache(图片缓存类)package com.test.myvolleytest;import com.android.volley.toolbox.ImageLoader.ImageCache;import android.graphics.Bitmap;import android.support.v4.util.LruCache;{private LruCache<String, Bitmap> mCache;public BitmapCache() {int maxSize = 10 * 1024 * 1024;mCache = new LruCache<String, Bitmap>(maxSize) {(String key, Bitmap bitmap) {return bitmap.getRowBytes() * bitmap.getHeight();}};}@Overridepublic Bitmap getBitmap(String url) {return mCache.get(url);}(String url, Bitmap bitmap) {mCache.put(url, bitmap);} } 主布局<LinearLayout 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”android:orientation=”vertical” ><Buttonandroid:id=”@+id/button”android:layout_width=”wrap_content”android:layout_height=”wrap_content”android:text=”Volley” /><Buttonandroid:id=”@+id/button_json”android:layout_width=”wrap_content”android:layout_height=”wrap_content”android:text=”Json” /><Buttonandroid:id=”@+id/button_imagerequest”android:layout_width=”wrap_content”android:layout_height=”wrap_content”android:text=”ImageRequest” /><Buttonandroid:id=”@+id/button_imageloder”android:layout_width=”wrap_content”android:layout_height=”wrap_content”android:text=”ImageLoder” /><Buttonandroid:id=”@+id/button_networkimageview”android:layout_width=”wrap_content”android:layout_height=”wrap_content”android:text=”NetworkImageView”/><com.android.volley.toolbox.NetworkImageViewandroid:id=”@+id/network_image_view”android:layout_width=”200dp”android:layout_height=”200dp”android:layout_gravity=”center_horizontal”/><ImageViewandroid:id=”@+id/image”android:layout_width=”wrap_content”android:layout_height=”wrap_content” /></LinearLayout>

只要有信心,人永远不会挫败

Volley程序集合(使用单例,保证只会创建一个队列)

相关文章:

你感兴趣的文章:

标签云: