Volley中ImageRequest、ImageLoader、NetworkImageView的简单使用

public class VolleyApi{
    private Context context;
    private View view;
    //步骤1:创建Volley的网络请求队列
    RequestQueue mQueue;
    //定义请求的URL
    private String url = "http://ditu.amap.com/service/regeo?longitude=121.04925573429551&latitude=31.315590522490712";
    public VolleyApi(Context context){
        this.context = context;
        mQueue = Volley.newRequestQueue(context);
    }

    public VolleyApi(View context){
        this.view = context;
        mQueue = Volley.newRequestQueue(view.getContext());
    }

    /*
    *ImageRequest不提交参数个服务器
    */
    public void getImageData(){
        /*
         *步骤2:创建 ImageRequest请求不给服务器提交参数
         */
        ImageRequest imageRequest = new ImageRequest(url, new Response.Listener<Bitmap>() {
            @Override
            public void onResponse(Bitmap bitmap) {
                ImageView imageView = (ImageView) View.inflate(context,R.layout.activity_main,null)
                        .findViewById(R.id.imageview);
                imageView.setImageBitmap(bitmap);
            }
        }, 100, 100, Bitmap.Config.RGB_565, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                ImageView imageView = (ImageView) View.inflate(context,R.layout.activity_main,null)
                        .findViewById(R.id.imageview);
                imageView.setImageResource(R.mipmap.ic_launcher);
            }
        });
        //步骤3:<span style="font-family: Arial, Helvetica, sans-serif;">ImageRequest </span>加入到队列中
        mQueue.add(imageRequest);
    }
    /*
    *ImageRequest提交参数个服务器
    */
    public void getAndPutImageData(){
         /*
         *步骤2:创建 ImageRequest请求不给服务器提交参数
         */
        ImageRequest imageRequest = new ImageRequest("https://img-my.csdn.net/uploads/201407/17/1405567749_8669.jpg", new Response.Listener<Bitmap>() {
            @Override
            public void onResponse(Bitmap bitmap) {
                ImageView imageView = (ImageView) View.inflate(context,R.layout.activity_main,null)
                        .findViewById(R.id.imageview);
                imageView.setImageBitmap(bitmap);
            }
        }, 100, 100, Bitmap.Config.RGB_565, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                ImageView imageView = (ImageView) View.inflate(context,R.layout.activity_main,null)
                        .findViewById(R.id.imageview);
                imageView.setImageResource(R.mipmap.ic_launcher);
            }
        }){
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                return super.getParams();
            }
        };
        //步骤3:加入到队列中
        mQueue.add(imageRequest);
    }

    /*  单张图片 ImageCache为空
      *ImageLoader不提交参数个服务器
      * ImageLoader用于加载网络上的图片,
      * 比ImageRequest更加高效,
      * 图片进行缓存,
      * 过滤重复链接,
      * 避免重复发送请求。
      */
    public void getImageLoaderData(){
        //步骤2: 创建ImageLoader对象
      ImageLoader imageLoader = new ImageLoader(mQueue, new ImageLoader.ImageCache() {
          @Override
          public Bitmap getBitmap(String s) {
              return null;
          }

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

          }
      });
        //获取一个Imageview
        ImageView imageView = (ImageView) View.inflate(context,R.layout.activity_main,null)
                .findViewById(R.id.imageview);

        /*步骤3: 获取ImageListener对象
        *第一个参数指定用于显示图片的ImageView控件,
        *第二个参数指定加载图片的过程中显示的图片,
        *第三个参数指定加载图片失败的情况下显示的图片。
        */
        ImageLoader.ImageListener imageListener = ImageLoader.getImageListener(imageView,R.mipmap.
                ic_launcher,R.mipmap.ic_launcher);

        //步骤4: 调用ImageLoader的get()方法加载网络图片
        imageLoader.get(url,imageListener);
        //imageLoader.get(url,imageListener,200,300);
    }
    /*  多张图片ImageCache不为空
      *ImageLoader不提交参数个服务器
      * ImageLoader用于加载网络上的图片,
      * 比ImageRequest更加高效,
      * 图片进行缓存,
      * 过滤重复链接,
      * 避免重复发送请求。
      */
    public void getAndPutImageLoaderData(){
        //步骤2: 创建ImageLoader对象 缓存图片的大小20x1024x1024  20m
        final LruCache<String,Bitmap> lruCache =new LruCache<String,Bitmap>(20x1024x1024);
        ImageLoader imageLoader = new ImageLoader(mQueue, new ImageLoader.ImageCache(){
               //获取图片
            @Override
            public Bitmap getBitmap(String s) {
                return lruCache.get(s);
            }
               //提交图片
            @Override
            public void putBitmap(String s, Bitmap bitmap) {
                lruCache.put(s,bitmap);
            }
        });
        //获取一个Imageview
        ImageView imageView = (ImageView) View.inflate(context,R.layout.activity_main,null)
                .findViewById(R.id.imageview);

        //步骤3
        ImageLoader.ImageListener imageListener = ImageLoader.getImageListener(imageView,R.mipmap.
                ic_launcher,R.mipmap.ic_launcher);

        //步骤4
        imageLoader.get(url,imageListener);
        //imageLoader.get(url,imageListener,200,300);
    }

    public void getLoadNetImageData(){
        //步骤2:在布局文件中添加一个NetworkImageView控件
        //步骤3:创建一个ImageLoader对象
        final LruCache<String,Bitmap> lruCache = new LruCache<String,Bitmap>(20);
        ImageLoader.ImageCache imageCache = new ImageLoader.ImageCache() {
            @Override
            public Bitmap getBitmap(String s) {
                return lruCache.get(s);
            }

            @Override
            public void putBitmap(String s, Bitmap bitmap) {
                lruCache.put(s,bitmap);
            }
        };
        ImageLoader imageLoader = new ImageLoader(mQueue,imageCache);
        // 步骤4:在代码中获取该控件的实例
        NetworkImageView networkImageView = (NetworkImageView) View.inflate(context,R.layout.activity_main,null)
                .findViewById(R.id.networkimg);
        //步骤5:设置要加载的图片地址
        //设置加载中显示的图片
        networkImageView.setDefaultImageResId(R.mipmap.ic_launcher);
        //加载失败时显示的图片
        networkImageView.setErrorImageResId(R.mipmap.ic_launcher);
        //网络图片的地址
        networkImageView.setImageUrl(url, imageLoader);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值