Volley的使用

Volley是一个比较热门的网络框架,那么如何使用它呢?下面是对它使用的总结:

首先在app目录下的build.gradle添加依赖:

compile 'com.android.volley:volley:1.0.0'
 不管你想要用什么请求,或者是加载图片,都是跟着三个步骤走:(1)创建请求队列,(2)创建请求,(3)将请求添加到队列中去。

Get请求:步骤如上述,注意在创建请求时,要传入url,请求成功的监听,请求失败的监听。

 //1.创建一个请求队列
        final RequestQueue request = Volley.newRequestQueue(MainActivity.this);
        //2.创建一个请求

        StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                tv_result.setText(response);
            }
        }, new Response.ErrorListener() {//发生异常
            @Override
            public void onErrorResponse(VolleyError error) {
                tv_result.setText("加载错误");
            }
        });
        //3.将创建的请求添加到请求队列中去
        request.add(stringRequest);
Post请求:与Get请求不同的是,请求的第一参数是请求方法,并且可以在请求中的getParams方法中以Map对象添加参数
 //1.创建一个请求队列
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        //2.创建一个post请求
        StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                tv_result.setText(response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                tv_result.setText("加载失败" + error.getMessage());
            }
        }) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> mMap = new HashMap<>();
                //添加参数
                return super.getParams();
            }
        };
        //3.将Post请求添加到请求队列中去
        requestQueue.add(stringRequest);
Json请求:即返回的数据格式为Json,与Get相同,不过请求的对象不同,有JsonObject和JsonArray请求,根据需要做相应的请求。

 //1.创建一个请求队列
        final RequestQueue requestQueue = Volley.newRequestQueue(this);
        //2.创建一个post请求
        JsonObjectRequest jsonRequest = new JsonObjectRequest(url, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                tv_result.setText(response.toString());
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                tv_result.setText("加载失败:" + error);
            }
        });
        //3.将Post请求添加到请求队列中去
        requestQueue.add(jsonRequest);
ImageRequest请求:步骤不变,ImageRequest的参数为:图片地址,请求成功监听,图片的最大宽度,图片的最大高度,图片的参数(位),请求失败监听(可再次回调中设置请求失败显示的图片)
//1.创建请求队列
        RequestQueue request = Volley.newRequestQueue(MainActivity.this);
        //2.创建请求
        ImageRequest imageRequest = new ImageRequest(imgUrl, new Response.Listener<Bitmap>() {
            @Override
            public void onResponse(Bitmap response) {
                mImageView.setImageBitmap(response);
            }
        }, 0, 0, Bitmap.Config.RGB_565, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                mImageView.setImageResource(R.mipmap.ic_launcher);
            }
        });
        //3.将请求添加到请求队列中去
        request.add(imageRequest);
ImageLoader请求:第一个参数为请求队列,第二个是缓存对象
 //1.创建请求队列
        RequestQueue request = Volley.newRequestQueue(MainActivity.this);
        //2.创建一个请求
        ImageLoader imageLoader = new ImageLoader(request,
                new ImageLoader.ImageCache() {//图片缓存
            @Override
            public Bitmap getBitmap(String url) {
                return null;
            }

            @Override
            public void putBitmap(String url, Bitmap bitmap) {

            }
        }
        );
        //3.加载图片
        ImageLoader.ImageListener listener = imageLoader.getImageListener(mImageView,
                R.mipmap.ic_launcher, R.mipmap.ic_launcher);
        imageLoader.get(imgUrl, listener);
缓存对象可以自己定义,继承ImageCache,然后实现它的get和set方法,并设置内存的大小,贴下代码:
public class BitmapCache implements ImageLoader.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 value) {
                return value.getRowBytes() * value.getHeight();
            }
        };
    }

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

    @Override
    public void putBitmap(String url, Bitmap bitmap) {
        mCache.put(url, bitmap);
    }
}
Volley框架还提供了一个控件:NetworkImageView,它的用法与普通的ImageView类似,不过它可以结合ImageLoader请求,可以设置请求错误的默认图片、和没有请求时的默认图片:
  //1.创建请求队列
        RequestQueue request = Volley.newRequestQueue(MainActivity.this);
        ImageLoader imageLoader=new ImageLoader(request,new BitmapCache());

        //设置默认图片
        mNetImageView.setDefaultImageResId(R.mipmap.ic_launcher);
        mNetImageView.setErrorImageResId(R.mipmap.ic_launcher);

        //加载图片
        mNetImageView.setImageUrl(imgUrl,imageLoader);

Volley框架的基本用法差不多有这些,后续还会试着去读读它的源码理解理解。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值