欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android Volley框架使用方法详解

程序员文章站 2024-03-01 21:16:16
本文主要从两个方面对android volley框架的使用方法进行讲解,具体内容如下 一、网络请求 1.get方式请求数据 // 1 创建一个请求队列...

本文主要从两个方面对android volley框架的使用方法进行讲解,具体内容如下

一、网络请求

1.get方式请求数据

// 1 创建一个请求队列
requestqueue requestqueue = volley.newrequestqueue(volleyactivity.this);
 
// 2 创建一个请求
string url = "http://api.m.mtime.cn/pagesubarea/trailerlist.api";
 
stringrequest stringrequest = new stringrequest(url, new response.listener<string>() {
  // 正确接收数据回调
  @override
  public void onresponse(string s) {
    tv_volley_result.settext(s);
  }
}, new response.errorlistener() {// 发生异常后的监听回调
  @override
  public void onerrorresponse(volleyerror volleyerror) {
    tv_volley_result.settext("加载失败" + volleyerror);
  }
});
 
// 3 将创建的请求添加到请求队列中
requestqueue.add(stringrequest);
  

2.post方式请求数据

// 1 创建一个请求队列
requestqueue requestqueue = volley.newrequestqueue(volleyactivity.this);
 
// 2 创建一个post请求
string url = "http://api.m.mtime.cn/pagesubarea/trailerlist.api";
stringrequest stringrequest = new stringrequest(request.method.post, url, new response.listener<string>() {
  @override
  public void onresponse(string s) {
    tv_volley_result.settext(s);
  }
}, new response.errorlistener() {
  @override
  public void onerrorresponse(volleyerror volleyerror) {
    tv_volley_result.settext("请求失败" + volleyerror);
  }
}) {
  @override
  protected map<string, string> getparams() throws authfailureerror {
 
    map<string, string> map = new hashmap<string, string>();
//            map.put("value1","param1");
 
    return map;
  }
};
 
// 3 将post请求添加到队列中
requestqueue.add(stringrequest);
  

3.请求json数据

// 1 创建一个请求队列
requestqueue requestqueue = volley.newrequestqueue(volleyactivity.this);
 
// 2 创建一个请求
string url = "http://api.m.mtime.cn/pagesubarea/trailerlist.api";
jsonobjectrequest jsonobjectrequest = new jsonobjectrequest(url, null, new response.listener<jsonobject>() {
  @override
  public void onresponse(jsonobject jsonobject) {
    tv_volley_result.settext(jsonobject.tostring());
  }
}, new response.errorlistener() {
  @override
  public void onerrorresponse(volleyerror volleyerror) {
    tv_volley_result.settext("请求失败" + volleyerror);
  }
});
 
// 3 将创建的请求添加到请求队列中
requestqueue.add(jsonobjectrequest);   

二、图片加载

1.imagerequest加载图片

// 1 创建一个请求队列
requestqueue requestqueue = volley.newrequestqueue(volleyactivity.this);
 
// 2 创建一个图片的请求
string url = "http://img5.mtime.cn/mg/2016/10/11/160347.30270341.jpg";
imagerequest imagerequest = new imagerequest(url, new response.listener<bitmap>() {
  @override
  public void onresponse(bitmap bitmap) {
    // 正确接收到图片
    iv_volley_result.setimagebitmap(bitmap);
  }
}, 0, 0, bitmap.config.rgb_565, new response.errorlistener() {
  @override
  public void onerrorresponse(volleyerror volleyerror) {
    iv_volley_result.setimageresource(r.drawable.atguigu_logo);
  }
});
 
// 3 将请求添加到请求队列中
requestqueue.add(imagerequest); 

2.imageloader加载图片

// 创建一个请求队列
requestqueue requestqueue = volley.newrequestqueue(volleyactivity.this);
 
imageloader imageloader = new imageloader(requestqueue, new bitmapcache());
 
// 加载图片
string url = "http://img5.mtime.cn/mg/2016/10/11/160347.30270341.jpg";
imageloader.imagelistener imagelistener = imageloader.getimagelistener(iv_volley_result, r.drawable.atguigu_logo, r.drawable.atguigu_logo);
imageloader.get(url, imagelistener);  

 bitmapcache.java

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 bitmap) {
        return bitmap.getrowbytes() * bitmap.getheight();
      }
    };
  }

  @override
  public bitmap getbitmap(string url) {
    return mcache.get(url);
  }

  @override
  public void putbitmap(string url, bitmap bitmap) {
    mcache.put(url, bitmap);
  }
}

3.networkimageview加载图片

<com.android.volley.toolbox.networkimageview
  android:id="@+id/iv_volley_networkimagview"
  android:layout_width="200dp"
  android:layout_height="200dp"
  android:visibility="gone">
 
</com.android.volley.toolbox.networkimageview>
 

// 创建一个请求队列
requestqueue requestqueue = volley.newrequestqueue(volleyactivity.this);
 
// 创建一个imageloader
imageloader imageloader = new imageloader(requestqueue, new bitmapcache());
 
// 默认图片和异常图片设置
iv_volley_networkimagview.setdefaultimageresid(r.drawable.atguigu_logo);
iv_volley_networkimagview.seterrorimageresid(r.drawable.atguigu_logo);
 
// 加载图片
string url = "http://img5.mtime.cn/mg/2016/10/11/160347.30270341.jpg";
iv_volley_networkimagview.setimageurl(url, imageloader);