Volley是什么?Android平台网络通信库,2013 Google I/O 大会发布的Android平台网络通讯库,旨在帮助开发者实现更快速,简单,健壮的网络通讯。支持网络图片的缓存加载功能。适用场景:数据量不大,但通讯频繁的场景。
官网介绍:
https://android.googlesource.com/platform/frameworks/volley
volley的功能:1、JSON字符串请求、图片加载(异步的方式) 2、网络请求的排序和优先级处理 3、缓存 4、多级别取消请求 5、与Activity生命周期联动
下面举个小的demo,来实现Volley的图片加载(分别包括ImageView和NetworkImageView两个控件)
先要确定导入了volley.jar包
布局文件main_activity.xml:
<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" >
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<com.android.volley.toolbox.NetworkImageView
android:id="@+id/iv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
MainActivity.java:
public class MainActivity extends Activity {
private ImageView img;
private NetworkImageView iv2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img = (ImageView) findViewById(R.id.img);
iv2 = (NetworkImageView) findViewById(R.id.iv2);
loadImage();// ImageView图片加载方法
loadNetworkImage();// NetworkImageView图片加载方法
}
// http://10.10.5.174/cj.jpeg 10.10.5.174是我本机ip cj.jpeg是放在服务器下的一张图片
public void loadImage() {
String imaurl = "http://10.10.5.174/cj.jpeg";
RequestQueue queue = 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(queue, imageCache); // 创建加载器
ImageListener listener = imageLoader.getImageListener(img,
R.drawable.ic_launcher, R.drawable.ic_launcher); // 监听器 参数分别为:ImageView、加载默认的图片、若加载失败的图片
imageLoader.get(imaurl, listener);// 完成图片加载 参数分别为:图片url、监听事件
}
// 类似如上方法
public void loadNetworkImage() {
String imaurl = "http://10.10.5.174/cj.jpeg";
RequestQueue queue = 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(queue, imageCache);
iv2.setTag("url"); // 设置标签
iv2.setImageUrl(imaurl, imageLoader);
}
}