准备工作:
从官网上下载库文件,如果登陆不了,可以从这里下载集成好的.jar。下载之后把它作为你项目的支持库。
发送一个简单的请求:
final TextView mTextView = (TextView) findViewById(R.id.text);
...
// 实例化请求队列
RequestQueue queue = Volley.newRequestQueue(this);
String url ="http://www.google.com";
// 从提供的URL中请求字符串相应。
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// Display the first 500 characters of the response string.
mTextView.setText("Response is: "+ response.substring(0,500));
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
mTextView.setText("That didn‘t work!");
}
});
// 添加这个请求到请求队列中。
queue.add(stringRequest);
建立一个请求队列:
创建一个队列单例
/**
* Created by peng on 2015/6/18.
*/
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) {
// getApplicationContext() 这个方法很关键
mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext());
}
return mRequestQueue;
}
public <T> void addToRequestQueue(Request<T> req) {
getRequestQueue().add(req);
}
public ImageLoader getImageLoader() {
return mImageLoader;
}
}
用队列单例发起一个请求
// 获取请求队列
RequestQueue queue = MySingleton.getInstance(this.getApplicationContext()).
getRequestQueue();
...
// 添加一个请求到队列中
MySingleton.getInstance(this).addToRequestQueue(stringRequest);
请求一张图片:
ImageRequest:它可以确保图片请求发生在工作线程。
ImageLoader:它会提供一个内存缓存,使用它设置一张图片会提高性能。
NetworkImageView:它是基于ImageLoader,当你是从网络上请求图片时,可以比ImageView更有效。
使用ImageRequest
ImageView mImageView;
String url = "http://i.imgur.com/7spzG.png";
mImageView = (ImageView) findViewById(R.id.myImage);
...
// 从指定的URL取回图片,并在UI显示。
ImageRequest request = new ImageRequest(url,
new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap bitmap) {
mImageView.setImageBitmap(bitmap);
}
}, 0, 0, null,
new Response.ErrorListener() {
public void onErrorResponse(VolleyError error) {
mImageView.setImageResource(R.drawable.image_load_error);
}
});
// 通过单例访问请求队列
MySingleton.getInstance(this).addToRequestQueue(request);
使用ImageLoader
ImageLoader mImageLoader;
ImageView mImageView;
private static final String IMAGE_URL =
"http://developer.android.com/images/training/system-ui.png";
...
mImageView = (ImageView) findViewById(R.id.regularImageView);
// 从单例类中获取ImageLoader。
mImageLoader = MySingleton.getInstance(this).getImageLoader();
mImageLoader.get(IMAGE_URL, ImageLoader.getImageListener(mImageView,
R.drawable.def_image, R.drawable.err_image));
使用ImageLoader和NetworkImageView
<com.android.volley.toolbox.NetworkImageView
android:id="@+id/networkImageView"
android:layout_width="150dp"
android:layout_height="170dp"
android:layout_centerHorizontal="true" />
ImageLoader mImageLoader;
NetworkImageView mNetworkImageView;
private static final String IMAGE_URL =
"http://developer.android.com/images/training/system-ui.png";
...
mNetworkImageView = (NetworkImageView) findViewById(R.id.networkImageView);
// 从单例类中获取ImageLoader。
mImageLoader = MySingleton.getInstance(this).getImageLoader();
// 设置要加载图片的URL和用来执行请求的ImageLoader
mNetworkImageView.setImageUrl(IMAGE_URL, mImageLoader);
时间: 2024-11-06 03:46:27