Android框架Volley

简介: 对于学习android开发乐趣,这里给自己总结些Volley应用的经验,以便自己日后可以好好复习。(本人邮箱 : 893239524@qq.com)

1.Volley框架使用基本上一样的顺序(三步走):(不需要考了创建新线程的问题)

访问网络别忘了添加权限:<uses-permission android:name="android.permission.INTERNET"/>


(1).创建:RequestQueue requestQueue= Volley.newRequestQueue(this);


(2.1.1)当使用StringRequest时  

  

StringRequest stringRequest=new StringRequest(url,new Response.Listener(){},new Response.ErrorListener(){}){

public Map<String, String> getHeaders() throws AuthFailureError {


HashMap map=new HashMap();


    map.put("apikey ","你自己的apikey");


    return map;


}

};

当用于接收JSON数据时,在url出写接口(如:

http://apis.baidu.com/heweather/weather/free ? city=beijing)

通过getHeaders()函数传入apikey

在Listener 的 onResponse()函数中得到JSONString 的值。


(2.1.2)也可以通过 getParams()对Json的api参数值进行设置这时url的值就变了,并且参数多的第一个是请求方式:


StringRequest stringRequest=new StringRequest(url,new 

Response.Listener(){},new Response.ErrorListener(){}){

protected Map<String, String> getParams() throws AuthFailureError {


HashMap map=new HashMap();

    map.put("city","beijing"); //对应的apiStore的参数是什么就写什么


    return map;

}

public Map<String, String> getHeaders() throws AuthFailureError {


HashMap map=new HashMap();


    map.put("apikey ","你自己的apikey");


    return map;


}

};

(注意:getHeaders 、getParams()函数都是写在新代码区)



(2.2)JsonRequest的使用(两个直接子类:JsonObjectRequest和JsonArrayRequest)


JsonObjectRequest JsonObjectRequest=new JsonObjectRequest("http://apis.baidu.com/heweather/weather/free?city=beijing", new Response.Listener<JSONObject>() {},new Response.ErrorListener(){}){


public Map<String, String> getHeaders() throws AuthFailureError {


HashMap map=new HashMap();


    map.put("apikey ","af02a3e0e93ef6cbb85eada01a1c40ae");


    return map;


}

};





(在Response.Listener的onResponse()方法里通过textView2.setText(jsonObject.toString()); 得到JsonString)


在onErrorResponse中通过volleyError.getMessage()的到错误提示)



//使用JsonObjectRequest 需要注意:

/*使用JsonObjectRequest或继承自JsonObjectRequest类的对象提交post请求时,


如果有参数需要提交时必须一JsonObject的json串方式提交,否则通过getParams()方法的方式提交不管用

*/



(2.3)加载网络图片

//第一个URL图片的网址   第二个Listener  第三第四为最大宽和高,第五为图片质量Config.ARGB_8888四个字节,ARGB_565 ARGB_4444两个字节  第六个ErrorListener


 ImageRequest imageRequest=new ImageRequest("https://p.ssl.qhimg.com/t01df31145427f5ea2f.jpg", new Response.Listener<Bitmap>() {


@Override


    public void onResponse(Bitmap bitmap) {


imageView.setImageBitmap(bitmap);


    }


}, 0, 0, Bitmap.Config.ARGB_8888, new Response.ErrorListener() {


@Override


    public void onErrorResponse(VolleyError volleyError) {


}

});


(3)添加到 requestQueue中

 requestQueue.add(imageRequest);

// requestQueue.add(JsonObjectRequest);

// requestQueue.add(stringRequest);


二.Volley还提供了 NetworkImageView控件加载网络图片(四步走)

1.首先在布局文件中创建NetworkImageView

(含有 void类型的setImageUrl()、String getImageUrl()(得到传入的URL) 、void setDefaulImageId()(设置默认图片) 、SetErrorImageId()(设置当网络加载失败时显示的图片) 等函数)


1.创建RequestQueue对象

2.创建一个ImageLoader

3.在布局文件中添加一个NetWorkImageView控件

4.设置加载图片的网络地址和imageLoader


代码演示:

//首先定义出ImageLoader


ImageLoader imageLoader=new ImageLoader(requestQueue, new ImageLoader.ImageCache() {


@Override

    public Bitmap getBitmap(String s) {

return null;

    }

@Override

    public void putBitmap(String s, Bitmap bitmap) {

}

});


networkImageView.setDefaultImageResId(R.mipmap.ic_launcher);


networkImageView.setErrorImageResId(R.mipmap.ic_launcher);//加载失败显示图片


networkImageView.setImageUrl("https://p.ssl.qhimg.com/t01df31145427f5ea2f.jpg",imageLoader);


三.自定义Request

(用Gson解析数据)

参考项目: https://github.com/linyuanbin/Volley_kaiyuan

library-1.0.19.jar 就是这里Volley的jar包)


目录
相关文章
|
4月前
|
物联网 区块链 vr&ar
未来已来:探索区块链、物联网与虚拟现实技术的融合与应用安卓与iOS开发中的跨平台框架选择
【8月更文挑战第30天】在科技的巨轮下,新技术不断涌现,引领着社会进步。本文将聚焦于当前最前沿的技术——区块链、物联网和虚拟现实,探讨它们各自的发展趋势及其在未来可能的应用场景。我们将从这些技术的基本定义出发,逐步深入到它们的相互作用和集成应用,最后展望它们如何共同塑造一个全新的数字生态系统。
|
5月前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台框架解析
在移动应用开发的广阔舞台上,安卓和iOS一直是两大主角。随着技术的进步,开发者们渴望能有一种方式,让他们的应用能同时在这两大平台上运行,而不必为每一个平台单独编写代码。这就是跨平台框架诞生的背景。本文将探讨几种流行的跨平台框架,包括它们的优势、局限性,以及如何根据项目需求选择合适的框架。我们将从技术的深度和广度两个维度,对这些框架进行比较分析,旨在为开发者提供一个清晰的指南,帮助他们在安卓和iOS的开发旅程中,做出明智的选择。
|
1月前
|
算法 JavaScript Android开发
|
1月前
|
开发框架 Dart Android开发
安卓与iOS的跨平台开发:Flutter框架深度解析
在移动应用开发的海洋中,Flutter作为一艘灵活的帆船,正引领着开发者们驶向跨平台开发的新纪元。本文将揭开Flutter神秘的面纱,从其架构到核心特性,再到实际应用案例,我们将一同探索这个由谷歌打造的开源UI工具包如何让安卓与iOS应用开发变得更加高效而统一。你将看到,借助Flutter,打造精美、高性能的应用不再是难题,而是变成了一场创造性的旅程。
|
2月前
|
Java 程序员 API
Android|集成 slf4j + logback 作为日志框架
做个简单改造,统一 Android APP 和 Java 后端项目打印日志的体验。
139 1
|
3月前
|
前端开发 Java 数据库
💡Android开发者必看!掌握这5大框架,轻松打造爆款应用不是梦!🏆
在Android开发领域,框架犹如指路明灯,助力开发者加速应用开发并提升品质。本文将介绍五大必备框架:Retrofit简化网络请求,Room优化数据库访问,MVVM架构提高代码可维护性,Dagger 2管理依赖注入,Jetpack Compose革新UI开发。掌握这些框架,助你在竞争激烈的市场中脱颖而出,打造爆款应用。
436 3
|
3月前
|
编译器 Android开发 开发者
带你了解Android Jetpack库中的依赖注入框架:Hilt
本文介绍了Hilt,这是Google为Android开发的依赖注入框架,基于Dagger构建,旨在简化依赖注入过程。Hilt通过自动化的组件和注解减少了DI的样板代码,提高了应用的可测试性和可维护性。文章详细讲解了Hilt的主要概念、基本用法及原理,帮助开发者更好地理解和应用Hilt。
97 8
|
4月前
|
设计模式 Java Android开发
探索安卓应用开发:从新手到专家的旅程探索iOS开发中的SwiftUI框架
【8月更文挑战第29天】本文旨在通过一个易于理解的旅程比喻,带领读者深入探讨安卓应用开发的各个方面。我们将从基础概念入手,逐步过渡到高级技术,最后讨论如何维护和推广你的应用。无论你是编程新手还是有经验的开发者,这篇文章都将为你提供有价值的见解和实用的代码示例。让我们一起开始这段激动人心的旅程吧!
|
4月前
|
Android开发
基于Amlogic 安卓9.0, 驱动简说(三):使用misc框架,让驱动更简单
如何使用Amlogic T972安卓9.0系统上的misc框架来简化驱动程序开发,通过misc框架自动分配设备号并创建设备文件,从而减少代码量并避免设备号冲突。
59 0
基于Amlogic 安卓9.0, 驱动简说(三):使用misc框架,让驱动更简单
|
4月前
|
存储 前端开发 Java
Android MVVM框架详解与应用
在Android开发中,随着应用复杂度的增加,如何有效地组织和管理代码成为了一个重要的问题。MVVM(Model-View-ViewModel)架构模式因其清晰的结构和高效的开发效率,逐渐成为Android开发者们青睐的架构模式之一。本文将详细介绍Android MVVM框架的基本概念、优势、实现流程以及一个实际案例。
154 0