Volley学习笔记

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.创建图片请求对象,网络请求图片

  • 普通下载图片
    * 参数说明:
    * 1、请求的网址
    * 2、请求成功回调接口
    * 3、图片的最大的宽度
    * 4、图片的最大的高度
    * 5、图片在ImageView上面显示的样式
    * 6、图片的解码格式
    * 7、请求失败的回调接口
    * */
    ImageRequest request1=new ImageRequest(url1, new Response.Listener<Bitmap>() {
    @Override
    public void onResponse(Bitmap response) {
    iv1.setImageBitmap(response);
    }
    }, iv1.getWidth(), 200, ImageView.ScaleType.FIT_CENTER, Bitmap.Config.ARGB_8888, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
    Toast.makeText(ImageActivity.this,"网络异常",Toast.LENGTH_LONG).show();
    }
    });
    //开启请求
    MyApplication.queue.add(request1);

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);
}
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容