Volley学习笔记

2016-12-22  本文已影响13人  RoboyCore

1.Application设置请求队列

public class MyApplication extends Application {
public static RequestQueue sQueue;
@Override
public void onCreate() {
    super.onCreate();
    sQueue = Volley.newRequestQueue(this);
}
}

2.创建字符请求对象

 mRequest = new StringRequest(url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            tv.setText(response);
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
        }
    });
    MyApplication.sQueue.add(mRequest);

3.创建图片请求对象,网络请求图片

4.可以使用volley封装的ImageView,可以设置缓存和异步下载对象

imageLoader
 <com.android.volley.toolbox.NetworkImageView
    android:id="@+id/iv2"
    android:src="@mipmap/ic_launcher"
    android:onClick="click"
    android:layout_width="match_parent" android:layout_height="100dp"/>

//设置错误图片

            iv2.setErrorImageResId(R.mipmap.ic_launcher);
            ImageLoader loader1=new ImageLoader(MyApplication.queue,new MyImageCache());
            iv2.setImageUrl(url1,loader1);//开启异步下载

5使用带缓存的imageLoader

 ImageLoader imageLoader2 = new ImageLoader(MyApplication.sQueue,new MyImageCache());
          ImageLoader.ImageListener listener=ImageLoader.getImageListener(
            iv3,R.mipmap.ic_launcher,R.mipmap.ic_launcher);//默认和错误图片
            //加载图片
            imageLoader2.get(url,listener);

6、设置自定义的缓存

public class MyImageCache implements ImageLoader.ImageCache {
private SoftReference<LruCache<String,Bitmap>> softReference;
private ReferenceQueue<LruCache<String,Bitmap>> queue;//软引用图片回收会导致空指针,放入引用队列,可在没有引用时取回对象

public MyImageCache() {
    queue=new ReferenceQueue<>();
    softReference=new SoftReference<LruCache<String, Bitmap>>(
            new LruCache<String, Bitmap>(
                    (int) (Runtime.getRuntime().maxMemory()/8))
            {
            @Override
            protected int sizeOf(String key, Bitmap value) {
                return value.getByteCount();//重写sizeOf
            }
    },queue);

}

@Override
public Bitmap getBitmap(String url) {
    return softReference.get().get(url);
}

@Override
public void putBitmap(String url, Bitmap bitmap) {
    softReference.get().put(url,bitmap);
}
}
上一篇 下一篇

猜你喜欢

热点阅读