xUtils:全能Android工具库详解
"XUtils是一个强大的Android工具库,源自Afinal框架并进行了大量重构,提供了大文件上传、全面的HTTP请求支持、灵活的ORM以及不受混淆影响的事件注解。最低支持Android 2.2 (API Level 8)。" XUtils是一个针对Android平台的综合性开发工具库,它包含了一系列实用的功能,如数据库操作(DbUtils)、视图操作(ViewUtils)、网络请求(HttpUtils)以及位图处理(BitmapUtils)。以下是对这些主要模块的详细说明: 1. **DbUtils**: - DbUtils是XUtils中的数据库操作模块,它提供了对Android SQLite数据库的便捷操作。 - 支持ORM(Object-Relational Mapping)机制,允许开发者通过简单的Java对象与数据库表进行交互,减少SQL语句的编写。 - 提供了事务处理、查询、更新、插入和删除等操作,以及对数据的增删改查支持。 - 具有良好的封装性,可以防止在混淆过程中出现问题,提高了代码的稳定性和可维护性。 2. **ViewUtils**: - ViewUtils专注于Android视图的操作,简化了常见的视图注入和事件处理。 - 支持注解的方式进行事件监听,使得事件绑定更为简单,同时不受混淆影响。 - 提供了视图查找、设置属性和监听事件等功能,提高了开发效率。 - 可以方便地进行视图的常见操作,如设置可见性、添加点击事件等。 3. **HttpUtils**: - HttpUtils负责网络请求,提供了全面的HTTP协议支持,包括GET、POST、PUT、DELETE等多种请求方法。 - 支持上传大文件,解决了Android应用中处理大文件传输的问题。 - 可以处理各种HTTP响应状态码,如301、302重定向,以及处理Content-Disposition头信息。 - 能够处理各种类型的网络请求数据,如JSON、XML等,方便与服务器进行数据交互。 4. **BitmapUtils**: - BitmapUtils是位图处理模块,优化了Android中加载和处理图片的过程。 - 支持从网络、资源、文件系统等不同来源加载位图,并能进行缩放、裁剪等操作,避免内存溢出。 - 提供了缓存机制,减少对内存和磁盘的频繁访问,提高应用性能。 - 可以轻松实现位图的圆角处理、模糊效果等高级功能。 XUtils通过集成多种实用工具,极大地简化了Android开发中的常见任务,提高了开发效率,同时保持了代码的清晰和可维护性。它是Android开发者的得力助手,特别适合快速开发和原型验证。
## xUtils简介
* xUtils 包含了很多实用的android工具。
* xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持,拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响。
* xUitls最低兼容android 2.2 (api level 8)
## 目前xUtils主要有四大模块:
* DbUtils模块:
> * android中的orm框架,一行代码就可以进行增删改查;
> * 支持事务,默认关闭;
> * 可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名);
> * 支持绑定外键,保存实体时外键关联实体自动保存或更新;
> * 自动加载外键关联实体,支持延时加载;
> * 支持链式表达查询,更直观的查询语义,参考下面的介绍或sample中的例子。
* ViewUtils模块:
> * android中的ioc框架,完全注解方式就可以进行UI,资源和事件绑定;
> * 新的事件绑定方式,使用混淆工具混淆后仍可正常工作;
> * 目前支持常用的20种事件绑定,参见ViewCommonEventListener类和包com.lidroid.xutils.view.annotation.event。
* HttpUtils模块:
> * 支持同步,异步方式的请求;
> * 支持大文件上传,上传大文件不会oom;
> * 支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT请求;
> * 下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件;
> * 返回文本内容的请求(默认只启用了GET请求)支持缓存,可设置默认过期时间和针对当前请求的过期时间。
* BitmapUtils模块:
> * 加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象;
> * 支持加载网络图片和本地图片;
> * 内存管理使用lru算法,更好的管理bitmap内存;
> * 可配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等...
## 使用xUtils快速开发框架需要有以下权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
## 混淆时注意事项:
* 添加Android默认混淆配置${sdk.dir}/tools/proguard/proguard-android.txt
* 不要混淆xUtils中的注解类型,添加混淆配置:-keep class * extends java.lang.annotation.Annotation { *; }
* 对使用DbUtils模块持久化的实体类不要混淆,或者注解所有表和列名称@Table(name="xxx"),@Id(column="xxx"),
@Column(column="xxx"),@Foreign(column="xxx",foreign="xxx");
## DbUtils使用方法:
DbUtils db = DbUtils.create(this);
User user = new User(); //这里需要注意的是User对象必须有id属性,或者有通过@ID注解的属性
user.setEmail("wyouflf@qq.com");
user.setName("wyouflf");
db.save(user); // 使用saveBindingId保存实体时会为实体的id赋值
...
// 查找
Parent entity = db.findById(Parent.class, parent.getId());
Parent entity = db.findFirst(entity);//通过entity的属性查找
List<Parent> list = db.findAll(entity);//通过entity的属性查找
List<Parent> list = db.findAll(Parent.class);//通过类型查找
Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","=","test"));
// IS NULL
Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","=", null));
// IS NOT NULL
Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","!=", null));
// WHERE id<54 AND (age>20 OR age<30) ORDER BY id LIMIT pageSize OFFSET pageOffset
List<Parent> list = db.findAll(Selector.from(Parent.class)
.where("id" ,"<", 54)
.and(WhereBuilder.b("age", ">", 20).or("age", " < ", 30))
剩余7页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦