xUtils2和xUtils3的使用及区别
2016-08-10 23:18
441 查看
本人看 wyouflf的github整理的 地址:https://github.com/wyouflf/xUtils点击打开链接
Xutils是前两年很火的一个三方库(githup地址),是一个工具类,分4个模块:DbUtils、HttpUtils、ViewUtils、BitmapUtils,还有一个非常使用功能就是LogUtils,可以用来输出Log日志。这个第三方库已经很久没有更新了,对最新的6.0系统支持不是很好,所以现在出了一个新的Xutils3(githup地址),
以下是个人整理的两者间的异同
前言;
数据库方面 两者注解映射不同,例如xUtils2下 @Table(name="stu",execAfterTableCreated ="" ) 而xUtils3下直接是代替了onCreated
数据库创建和查询也有改动,但基本还是相同,例如xutils2中db.findFirst(Selector.from(Parent.class)。where.....而xUtils3中则是
db.selector(Parent.class).where(....).findFirst();但是里面基本的条件例如where,whereBuilder等参数还是没变的
网络操作方面 xUtils3是直接x.image().bind..或者x.http().post()等取代了http.send(method,url,callback);
视图方面 3中@Event()代替了@onClick(),而且下面的private代替了public
详情如下:
Xutils的4个模块的使用:
权限必须得有:
dBUtils:
用来操作数据库,创建数据库
用来加载ImageView的图片资源,可以加载本地、网络
BitmapUtils bUtils = new BitmapUtils(this);
bUtils.display(imgv,"http://image.tianjimedia.com/uploadImages/2013/221/JGR58NXB5V62.jpg");
viewUtils:
可以用来代替findViewbyId,也可以用来给控件添加点击事件
HttpUtils:
用来上传文件,下载文件
LogUtils的使用:
//设置是否允许输出对应级别的,false为不输出
LogUtils.allowE=false;
//以error的形式输出日志
LogUtils.e("ViewUtils调用成功!");
注意:除了DbUtils使用create创建对象外其余的3个模块都是使用new创建对象
下面是xUtils3
优点:(github上写的详细)
自动解析回调泛型, 更安全的断点续传策略.
xUtils 包含了很多实用的android工具.
xUtils 支持超大文件(超过2G)上传,更全面的http请求协议支持(11种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响...
xUtils 最低兼容Android 4.0 (api level 14). (Android 2.3?)
xUtils3变化较多所以建立了新的项目不在旧版(github.com/wyouflf/xUtils)上继续维护, 相对于旧版本:
HTTP实现替换HttpClient为UrlConnection, 自动解析回调泛型, 更安全的断点续传策略.
支持标准的Cookie策略, 区分domain, path...
事件注解去除不常用的功能, 提高性能.
数据库api简化提高性能, 达到和greenDao一致的性能.
图片绑定支持gif(受系统兼容性影响, 部分gif文件只能静态显示), webp; 支持圆角, 圆形, 方形等裁剪, 支持自动旋转..
添加权限 并且新建一个Application类,在里面对Xutils3做初始化工作,代码如下:
xUtils2使用new得到各模块的对象,现在xUtils3使用:x.模块名()得到对象
BitMapUtils的使用:
// assets file
x.image().bind(imageView, "assets://test.gif", imageOptions);
// local file
x.image().bind(imageView, new File("/sdcard/test.gif").toURI().toString(), imageOptions);
x.image().bind(imageView, "/sdcard/test.gif", imageOptions);
x.image().bind(imageView, "file:///sdcard/test.gif", imageOptions);
x.image().bind(imageView, "file:/sdcard/test.gif", imageOptions);
x.image().bind(imageView, url, imageOptions, new Callback.CommonCallback<Drawable>() {...});
x.image().loadDrawable(url, imageOptions, new Callback.CommonCallback<Drawable>() {...});
x.image().loadFile(url, imageOptions, new Callback.CommonCallback<File>() {...});
HttpUtlis的使用:
viewUtils的使用基本没变,只是绑定点击事件的时候有些出入:
绑定事件:
/**
* 使用ViewUtils设置按钮的点击事件,方法必须要私有化, 参数格式和type的参数一致,为了混淆方便,方法名要以Event或者Click结尾
* type可以不写,默认是点击事件类型
*/
@Event(value = R.id.btn, type = View.OnClickListener.class)
private void btnClick(View view) {
DbUtils:
先建一个类,用来生成数据库中的表,这里新建一个StudentInfo类(注意里面的@标签的使用,使用这些标签生成表的结构信息)内容如下:
接下来:
差不多就这样了。
Xutils是前两年很火的一个三方库(githup地址),是一个工具类,分4个模块:DbUtils、HttpUtils、ViewUtils、BitmapUtils,还有一个非常使用功能就是LogUtils,可以用来输出Log日志。这个第三方库已经很久没有更新了,对最新的6.0系统支持不是很好,所以现在出了一个新的Xutils3(githup地址),
以下是个人整理的两者间的异同
前言;
数据库方面 两者注解映射不同,例如xUtils2下 @Table(name="stu",execAfterTableCreated ="" ) 而xUtils3下直接是代替了onCreated
数据库创建和查询也有改动,但基本还是相同,例如xutils2中db.findFirst(Selector.from(Parent.class)。where.....而xUtils3中则是
db.selector(Parent.class).where(....).findFirst();但是里面基本的条件例如where,whereBuilder等参数还是没变的
网络操作方面 xUtils3是直接x.image().bind..或者x.http().post()等取代了http.send(method,url,callback);
视图方面 3中@Event()代替了@onClick(),而且下面的private代替了public
详情如下:
Xutils的4个模块的使用:
权限必须得有:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" />
dBUtils:
用来操作数据库,创建数据库
<span style="color:#FF0000;"> DbUtils dUtils = DbUtils.create(MainActivity.this, "Student"); try { //创建表,表名为包名_StudentInfo dUtils.createTableIfNotExist(StudentInfo.class); } catch (DbException e) { e.printStackTrace(); }</span>BitmapUtils:
用来加载ImageView的图片资源,可以加载本地、网络
BitmapUtils bUtils = new BitmapUtils(this);
bUtils.display(imgv,"http://image.tianjimedia.com/uploadImages/2013/221/JGR58NXB5V62.jpg");
viewUtils:
可以用来代替findViewbyId,也可以用来给控件添加点击事件
// 使用ViewUtils绑定控件 @ViewInject(R.id.tv_show) private TextView tv; @ViewInject(R.id.btn_show) private Button btn; // ViewUtils支持绑定点击事件 @OnClick(R.id.btn) public void btnShow(View view) { 一定要在在Activity的oncreate方法里面写上下面的代码: // 注入绑定事件 ViewUtils.inject(this);
HttpUtils:
用来上传文件,下载文件
HttpUtils hUtils = new HttpUtils(5 * 1000); hUtils.send(HttpMethod.GET, "http://blog.csdn.net/qq379454816", new RequestCallBack<String>() { @Override public void onSuccess(ResponseInfo<String> responseInfo) { txtv.setText(responseInfo.result); } @Override public void onFailure(HttpException error, String msg) { txtv.setText(error.getMessage() + "," + msg); } });
LogUtils的使用:
//设置是否允许输出对应级别的,false为不输出
LogUtils.allowE=false;
//以error的形式输出日志
LogUtils.e("ViewUtils调用成功!");
注意:除了DbUtils使用create创建对象外其余的3个模块都是使用new创建对象
下面是xUtils3
优点:(github上写的详细)
自动解析回调泛型, 更安全的断点续传策略.
xUtils 包含了很多实用的android工具.
xUtils 支持超大文件(超过2G)上传,更全面的http请求协议支持(11种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响...
xUtils 最低兼容Android 4.0 (api level 14). (Android 2.3?)
xUtils3变化较多所以建立了新的项目不在旧版(github.com/wyouflf/xUtils)上继续维护, 相对于旧版本:
HTTP实现替换HttpClient为UrlConnection, 自动解析回调泛型, 更安全的断点续传策略.
支持标准的Cookie策略, 区分domain, path...
事件注解去除不常用的功能, 提高性能.
数据库api简化提高性能, 达到和greenDao一致的性能.
图片绑定支持gif(受系统兼容性影响, 部分gif文件只能静态显示), webp; 支持圆角, 圆形, 方形等裁剪, 支持自动旋转..
添加权限 并且新建一个Application类,在里面对Xutils3做初始化工作,代码如下:
<span style="color:#FF0000;"> @Override public void onCreate() { super.onCreate(); // 初始化 x.Ext.init(this); // 设置是否输出debug,这个会极大影响性能 x.Ext.setDebug(true); } </span>
xUtils2使用new得到各模块的对象,现在xUtils3使用:x.模块名()得到对象
BitMapUtils的使用:
// 设置加载图片的参数 ImageOptions options = new ImageOptions.Builder() // 是否忽略GIF格式的图片 .setIgnoreGif(false) // 图片缩放模式 .setImageScaleType(ScaleType.CENTER_CROP) // 下载中显示的图片 .setLoadingDrawableId(R.drawable.ic_launcher) // 下载失败显示的图片 .setFailureDrawableId(R.drawable.ic_launcher) // 得到ImageOptions对象 .build(); // 加载图片 x.image().bind(imgv, imagUrl, options, new CommonCallback<Drawable>() { @Override public void onSuccess(Drawable arg0) { LogUtil.e("下载成功"); } @Override public void onFinished() { LogUtil.e("下载完成"); } @Override public void onError(Throwable arg0, boolean arg1) { LogUtil.e("下载出错," + arg0.getMessage()); } @Override public void onCancelled(CancelledException arg0) { LogUtil.e("下载取消"); } });
// assets file
x.image().bind(imageView, "assets://test.gif", imageOptions);
// local file
x.image().bind(imageView, new File("/sdcard/test.gif").toURI().toString(), imageOptions);
x.image().bind(imageView, "/sdcard/test.gif", imageOptions);
x.image().bind(imageView, "file:///sdcard/test.gif", imageOptions);
x.image().bind(imageView, "file:/sdcard/test.gif", imageOptions);
x.image().bind(imageView, url, imageOptions, new Callback.CommonCallback<Drawable>() {...});
x.image().loadDrawable(url, imageOptions, new Callback.CommonCallback<Drawable>() {...});
x.image().loadFile(url, imageOptions, new Callback.CommonCallback<File>() {...});
HttpUtlis的使用:
// 请求参数 RequestParams params = new RequestParams("http://www.baidu.com"); x.http().get(params, new CommonCallback<String>() { @Override public void onCancelled(CancelledException arg0) { } @Override public void onError(Throwable arg0, boolean arg1) { } @Override public void onFinished() { } @Override public void onSuccess(String arg0) { // 成功下载,显示到txtv上面 txtv.setText(arg0); } });
viewUtils的使用基本没变,只是绑定点击事件的时候有些出入:
// 使用ViewUtils绑定控件 @ViewInject(R.id.tv) private TextView tv1; @ViewInject(R.id.btn) private Button btn1;
绑定事件:
/**
* 使用ViewUtils设置按钮的点击事件,方法必须要私有化, 参数格式和type的参数一致,为了混淆方便,方法名要以Event或者Click结尾
* type可以不写,默认是点击事件类型
*/
@Event(value = R.id.btn, type = View.OnClickListener.class)
private void btnClick(View view) {
DbUtils:
先建一个类,用来生成数据库中的表,这里新建一个StudentInfo类(注意里面的@标签的使用,使用这些标签生成表的结构信息)内容如下:
@Table(name = "info") public class StudentInfo { @Column(name = "id", isId = true) private int id; @Column(name = "name") private String name; @Column(name = "age") private int age; @Column(name="gender) private String gender; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getGender() { return age; } public void setGender(String gender) { this.gender = gender; } }
接下来:
DbManager.DaoConfig daoConfig = new DaoConfig() // 数据库的名字 .setDbName("SudentInfo") // 保存到指定路径 // .setDbDir(new // File("/sdcard") // 数据库的版本号 .setDbVersion(1) .setDbOpenListener(new DbManager.DbOpenListener() { @Override public void onDbOpened(DbManager db) { //开启WAL,巨大提升写入的速度 db.getDatabase().enableWriteAheadLogging(); } }) // 数据库版本更新监听 .setDbUpgradeListener(new DbUpgradeListener() { @Override public void onUpgrade(DbManager arg0, int arg1, int arg2) { } }); DbManager manager = x.getDb(daoConfig); try { //创建对象,用来生成表 Student stu = new Student(); stu.setAge(20); stu.setName("小明"); stu.setGender("男"); //创建表 manager.saveOrUpdate(info); } catch (DbException e) { e.printStackTrace(); }
差不多就这样了。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories