xUtils3.0
1.Android快速开发框架
2.xUtils中拥有四大模块
① View
② Http
③ ImageLoader
④ DataBase
使用方法
1.添加依赖,通过open module settings进行依赖添加
2.声明权限,需要网络请求添加internet权限,需要读取文件,缓存文件,添加sd卡写权限
3.初始化:首先自定义Application,定义之后去Manifest文件中的application标签下的name属性上进行注册。注册之后重写我们Application的onCreate方法,在onCreate中进行框架的初始化。
x.Ext.init(Application);
View
1.在Activity中使用:
① 在onCreate中进行反转注入 x.view().inject(Activity)
② 设置布局使用 @ContentView(layoutResId) 使用位置在我们的Activity类上面
③ 声明View使用 @ViewInject(R.id.xxx) 使用位置在我们的类中,成员变量。
④ 事件注入使用 @Event(value = R.id.xxx,type= xxxListener.class)
value 支持数组
!!! Action:事件注入方法必须私有
参数列表必须与指定type对应的监听器中的函数的参数列表保持一致
方法名最好以onEvent或Click结尾
有返回值的监听,要返回对应的返回值。
2.在Adapter中使用:
① 在ViewHolder中对声明的View使用 @ViewInject 进行注入
② 在getView方法的实例化holder之后调用 x.view().inject(holder,converView)
3.在Fragment中进行使用:
① 在onCreateView中使用 x.view().inject(Fragment,LayoutInflater,container)注入
② 在onViewCreated判断在onCreateView中是否注入了,如果注入不做任何操作,如果没有注入,那我们就注入一下 x.view().inject(fragment,view)
③ 布局注入,和Activity一样,在类上面使用@ContentView(layoutResId)
view注入和Activity一样, 在Fragment中使用@ViewInject(R.id.xxx) 成员变量
事件注入和Activity一样,@Event(value=R.id.xxx,type= xxxListener.class)
Http
1.简单使用
① 先获取一个RequestParams对象,直接RequestParams params = new RequestParams(url)
如果有参数,可以调用params.addBodyParamter(key,value) key是String,value支持Sting,File,InputStream,byte[]
也可以调用params.addQueryStringParameter(key,value) key是String,value也是String
② 如果是一个简单的使用,如果是get直接调用 x.http().get(parmas,new CallBack.CommenCallBack<String>{})
③ 如果是post直接调用x.http().post(parmas,new CallBack.CommenCallBack<String>{})
④ 我们的CallBack有四个回调函数:onSuccess,onCanceled,onError,onFinished。
无论哪种情况都会调用onFinished,如果我们请求成功会调用onSuccess,如果我们请求失败,或是发生错误
会回调onError,如果我们的请求被取消,会回调onCanceled
2.带取消的使用
基本使用和简单使用并无区别,唯一需要注意的是将我们x.http.get()或x.http().post()对应的对象获取过来
使用Callback.Cancelable获取过来,当我们想取消网络请求的时候,调用cancel方法。
3.自定义网络请求
① 新创建一个类,继承自RequestParams,使用@HttpRequest注解修饰我们的类,指定host= "服务器地址"
path="路径(服务器中的相对路径)"
② 使用的时候依然直接new 出来,调用x.http().get() or x.http().post()
③ 如果我们的请求拥有参数,可以使用 '简单使用' 的添加参数的方法。也可以使用在自定义类中直接持有请求的字段(参数),在我们实例化之后,直接给对象赋值
④ 创建一个类,实现ResponseParse,里面有两个方法checkResponse(),parse()。我们一般会在check对内容进行一个简单的过滤。一般在parse中进行解析操作,默认支持json,xml解析,其余定制解析需要研究源码。
⑤ 为我们的返回值创建模型类,在类上使用@HttpResponse注解,注解 parse = 自定义parse.class
⑥ 使用的时候,使用的时候将CallBack.CommenCallBack<T> 中的泛型T指定为我们添加注解的模型类。
Image
使用起来比较简单:
x.image().bind(iamgeView,url)
但是我们很多时候需要自定义配置,ImageOptions
x.image().bind(imageView,url,imageOptions)
简单介绍一下imageOptions
ImageOptions options = new ImageOptions.Builder()
// 设置图片渐变
.setFadeIn(true)
// 设置使用缓存
.setUseMemCache(true)
// 设置加载过程图片
.setLoadingDrawableId(R.mipmap.ic_launcher)
// 设置加载失败的图片
.setFailureDrawableId(R.mipmap.ic_launcher)
// 设置圆形
//.setCircular(true)
// 设置圆角 TODO: 圆角最好和方形属性配合使用
.setRadius(DensityUtil.px2dip(20))
// 设置方形
.setSquare(true)
// 设置动画
.setAnimation(AnimationUtils.loadAnimation(context,R.anim.image_in))
.build;
DataBase
基本使用
① 首先我们需要获取一个DbManager,DbManager dbManager = x.getDb(DaoConfig),实例化的时候需要一 个DaoConfig的参数。
② 实例化一个DaoConfig,直接new DaoConfig,DaoConfig可以配置数据库的 名字,版本,存储位置,是否支 持事物,还有打开监听,升级监听,创建监听
③ 当拥有DbManager对象之后,我们可以使用DbManager进行数据的增删改查。
注意:
① 我们操作的对象需要添加注解在model上,使用@Table(name = "表名")
② 在我们需要存到数据库中的字段上面添加@Colunms(name = "字段名",isId = boolean,autoGen = boolean),通常我们只使用name,如果是id的或者将一个唯一的属性作为id的,需要将isId设置为 true,想要id为自己设置的数值,需要将autoGen设置为false,为true的时候自动生成,自增。
1.存储数据:
DbManager.save(Object)
2.查询数据
DbManager.selector(Class<?>) 获取指定表中的数据
.where(WhereBuilder) 获取条件
.or(WhereBuilder) 满足其中一个条件即可
.and(WhereBuilder) 同时满足的条件
.orderBy("columns",boolean) 根据某一字段进行排序,boolean为false或者不填为升序, 反之降序
.limit(number) 限制获取条数,如果满足条件的超过我们的限制,只获取我们限制的条数,如 果满足条件的没有达到限制条数,则为实际条数
.findAll()。将所有符合前面限制条件的对象获取出来。
3.更新数据
DbManager.update(Class<?>,WhereBuilder,KeyValue)
① 更新的对象对应的Class,实际对应的是数据库中的表
② 更新条件
③ 更新的字段,key-value形势,key-数据库中的字段,value-我们替换的内容
4.删除数据
DbManager.delete(Class<?>,WhereBuilder)
① 删除对象对应的Class,实际对应的是数据库中的表
② 删除条件
5.核心
WhereBuilder
① 实例化 WhereBuilder.b(param1,param2,param3)
② param1 字段,对应表中的字段
③ param2 操作符, " < > = like...."
④ param3 值value,我们字段对应的值