1.下载Volley
2.StringRequest用法
首先需要获取到一个RequestQueue对象
RequestQueue mQueue = Volley.newRequestQueue(context);
接下来为了要发出一条HTTP请求,我们还需要创建一个StringRequest对象
StringRequest stringRequest = new StringRequest("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 error) {
Log.e("TAG", error.getMessage(), error);
}
});
最后,将这个StringRequest对象添加到RequestQueue里面就可以了
mQueue.add(stringRequest);
3. JsonRequest用法
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("http://m.weather.com.cn/data/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);
}
});
mQueue.add(jsonObjectRequest);
4. ImageRequest的用法
步骤:
1. 创建一个RequestQueue对象。
RequestQueue mQueue = Volley.newRequestQueue(context);
2. 创建一个Request对象。
ImageRequest imageRequest = new ImageRequest(
"http://developer.android.com/images/home/aw_dac.png",
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.default_image);
}
});
3. 将Request对象添加到RequestQueue里面。
mQueue.add(imageRequest);
5. ImageLoader的用法
步骤:
1. 创建一个RequestQueue对象。
RequestQueue mQueue = Volley.newRequestQueue(context);
2. 创建一个ImageLoader对象。
ImageLoader imageLoader = new ImageLoader(mQueue, new ImageCache() {
@Override
public void putBitmap(String url, Bitmap bitmap) {
}
@Override
public Bitmap getBitmap(String url) {
return null;
}
});
3. 获取一个ImageListener对象。
ImageListener listener = ImageLoader.getImageListener(imageView,
R.drawable.default_image, R.drawable.failed_image);
4. 调用ImageLoader的get()方法加载网络上的图片。
imageLoader.get("https://img-my.youkuaiyun.com/uploads/201404/13/1397393290_5765.jpeg", listener);
或(指定图片最大宽高)
imageLoader.get("https://img-my.youkuaiyun.com/uploads/201404/13/1397393290_5765.jpeg",
listener, 200, 200);
如果想要写一个性能非常好的ImageCache,最好就要借助Android提供的LruCache功能了
新建一个BitmapCache并实现了ImageCache接口
public class BitmapCache implements ImageCache {
private LruCache<String, Bitmap> mCache;
public BitmapCache() {
int maxSize = 10 * 1024 * 1024;//缓存图片设置为10M
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);
}
}
修改ImageLoader代码
ImageLoader imageLoader = new ImageLoader(mQueue, new BitmapCache());
6. NetworkImageView的用法
NetworkImageView是一个自定义控制,它是继承自ImageView的,具备ImageView控件的所有功能,并且在原生的基础之上加入了加载网络图片的功能。NetworkImageView控件的用法要比前两种方式更加简单,大致可以分为以下五步:
3. 在布局文件中添加一个NetworkImageView控件。
1. 创建一个RequestQueue对象。
RequestQueue mQueue = Volley.newRequestQueue(context);
2. 创建一个ImageLoader对象。
ImageLoader imageLoader = new ImageLoader(mQueue, new ImageCache() {
@Override
public void putBitmap(String url, Bitmap bitmap) {
}
@Override
public Bitmap getBitmap(String url) {
return null;
}
});
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Send Request" />
<com.android.volley.toolbox.NetworkImageView
android:id="@+id/network_image_view"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center_horizontal"
/>
</LinearLayout>
4. 在代码中获取该控件的实例。
networkImageView = (NetworkImageView) findViewById(R.id.network_image_view);
5. 设置要加载的图片地址。
networkImageView.setDefaultImageResId(R.drawable.default_image);//正在读取时的图片
networkImageView.setErrorImageResId(R.drawable.failed_image);//读取失败时的图片
networkImageView.setImageUrl("https://img-my.youkuaiyun.com/uploads/201404/13/1397393290_5765.jpeg",imageLoader);