程序
单例程序
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)
public class MySingleton {
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);
@Override
public Bitmap getBitmap(String url) {
return cache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
cache.put(url, bitmap);
}
});
}
public static synchronized MySingleton getInstance(Context context) {
if (mInstance == null) {
mInstance = new MySingleton(context);
}
return mInstance;
}
public RequestQueue getRequestQueue() {
if (mRequestQueue == null) {
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;
public class MainActivity extends Activity implements OnClickListener {
private Button mButton;
private Button mButtonJson;
private Button mButtonImageRequest;
private Button mButtonImageLoader;
private Button mButtonNetWorkImageView;
private NetworkImageView mNetworkImageView;
private ImageView imageView;
@Override
protected void onCreate(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);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
StringRequest stringRequest = new StringRequest(Request.Method.GET,"http://www.baidu.com", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("TAG", response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(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>() {
@Override
public void onResponse(JSONObject response) {
Log.d("TAG", response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(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>() {
@Override
public void onResponse(Bitmap response) {
imageView.setImageBitmap(response);
}
}, 0, 0, Config.RGB_565, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
imageView.setImageResource(R.drawable.ic_launcher);
}
});
mQueue3.add(imageRequest);
break;
case R.id.button_imageloder:
RequestQueue mQueue4 = Volley.newRequestQueue(MainActivity.this);
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:
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("https://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;
public class BitmapCache implements ImageCache {
private LruCache<String, Bitmap> mCache;
public BitmapCache() {
int maxSize = 10 * 1024 * 1024;
mCache = new LruCache<String, Bitmap>(maxSize) {
@Override
protected int sizeOf(String key, Bitmap bitmap) {
return bitmap.getRowBytes() * bitmap.getHeight();
}
};
}
@Override
public Bitmap getBitmap(String url) {
return mCache.get(url);
}
@Override
public void putBitmap(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" >
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Volley" />
<Button
android:id="@+id/button_json"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Json" />
<Button
android:id="@+id/button_imagerequest"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ImageRequest" />
<Button
android:id="@+id/button_imageloder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ImageLoder" />
<Button
android:id="@+id/button_networkimageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="NetworkImageView"
/>
<com.android.volley.toolbox.NetworkImageView
android:id="@+id/network_image_view"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center_horizontal"
/>
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>