首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

开源项目xUtils3开发教程

Android全能开源项目xUtils3开发教程、简单封装一、简介

xUtils是一个比较全能的开源项目了, 包含了orm, http(s), image, view注解, 但依然很轻量级(246K), 并且特性强大, 方便扩展。这是xUtils3 的 github地址

xUtils3 的一些特性

xUtils支持超大文件(超过2G)上传,更全面的http请求协议支持(11种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响;

xUtils3变化较多所以建立了新的项目不在旧版(github.com/wyouflf/xUtils)上继续维护, 相对于旧版本:

(1)HTTP实现替换HttpClient为UrlConnection, 自动解析回调泛型, 更安全的断点续传策略;

(2)支持标准的Cookie策略, 区分domain, path;

(3)事件注解去除不常用的功能, 提高性能;

(4)数据库api简化提高性能, 达到和greenDao一致的性能;

(5)图片绑定支持gif(受系统兼容性影响, 部分gif文件只能静态显示), webp; 支持圆角, 圆形, 方形等裁剪, 支持自动旋转。

二、环境搭建

在build.gradle中加入如下依赖,编写文章时,最新版本为3.5.0,可以到github或者maven仓库查询最新版本。

//gradle4.4之前

compile 'org.xutils:xutils:3.5.0'

//gradle4.4之后

implementation 'org.xutils:xutils:3.5.0'

需要的权限

配置

在AndroidManifest文件中注册TRApplicaction

三、注解模块的使用

xUtils3自动注入注解 真的是很好用,这样就不用一个个findById去注入组件了。

Activity中注解的使用

Fragment中注解的使用

绑定事件

/**

* 1. 方法必须私有限定,

* 2. 方法参数形式必须和type对应的Listener接口一致.

* 3. 注解参数value支持数组: value=

**/

@Event()

privatevoidonClick(View v){ ....}

四、网络请求

由于Android6.0版本之后将HttpClient替换为UrlConnection,所以修改老项目的时候一定要注意。

这里我们简单封装一下, 请求参数通过map传过来,然后通过回调返回请求结果。

发起网络请求

五、绑定图片

ImageOptions 绑定图片设置,可以设置圆形图片,一般在头像中用的比较多

官方给的一些案例

六、异步执行任务

注意这是在子线程操作,如果操作ui,要使用handler

x.task().run(newRunnable() {

@Overridepublicvoidrun() {//异步任务}});

x.task().post(newRunnable() {@Overridepublicvoidrun() {//同步代码}});

七、ORM 数据库操作

操作sqlite数据库,也有其他的库,这个我比较喜欢,可能习惯了吧,还支持多条件查询等,属性也支持注解。

Application中进行初始化配置DaoConfig

数据库操作 CRUD

// User类在最底下

DbManager db = x.getDb(daoConfig);db.dropDb(); // 删除数据库

db.dropTable(User.class); // 删除表

db.save(new User("nelson")); //新增数据

db.delete(User.class); //mtb_user表中数据将被全部删除

//条件删除:

WhereBuilder b = WhereBuilder.b();b.and("id",">",2);

//构造修改的条件

b.and("id","

//第一种写法:

ChildInfo first = db.findFirst(ChildInfo.class);

first.setcName("zhansan2");

db.update(first,"c_name"); //c_name:表中的字段名

//第二种写法:

WhereBuilder b = WhereBuilder.b();

b.and("id","=",first.getId()); //构造修改的条件

KeyValue name = new KeyValue("c_name","zhansan3");

db.update(ChildInfo.class,b,name);

//第三种写法:

first.setcName("zhansan4");db.saveOrUpdate(first);

复杂提交查询

User实体类

如果想复制代码可以进入博客或者简书复制,关注公众号,点击博客菜单,会回复博客和简书地址。或者回复关键字博客

编辑:nelson

本文出自「码农笔录」

如果你有好的文章想推荐,请私信后台!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180522G02NH000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券