本人看 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 dUtils = DbUtils.create(MainActivity.this, "Student");
try {
//创建表,表名为包名_StudentInfo
dUtils.createTableIfNotExist(StudentInfo.class);
} catch (DbException e) {
e.printStackTrace();
}
BitmapUtils:
// 使用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() {
@Override
public void onSuccess(ResponseInfo responseInfo) {
txtv.setText(responseInfo.result);
}
@Override
public void onFailure(HttpException error, String msg) {
txtv.setText(error.getMessage() + "," + msg);
}
});
注意:除了DbUtils使用create创建对象外其余的3个模块都是使用new创建对象
下面是xUtils3
优点:(github上写的详细)
自动解析回调泛型, 更安全的断点续传策略.
添加权限 并且新建一个Application类,在里面对Xutils3做初始化工作,代码如下:
@Override
public void onCreate() {
super.onCreate();
// 初始化
x.Ext.init(this);
// 设置是否输出debug,这个会极大影响性能
x.Ext.setDebug(true);
}
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() {
@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
x.image().loadDrawable(url, imageOptions, new Callback.CommonCallback
x.image().loadFile(url, imageOptions, new Callback.CommonCallback
HttpUtlis的使用:
// 请求参数
RequestParams params = new RequestParams("http://www.baidu.com");
x.http().get(params, new CommonCallback() {
@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绑定控件
@ViewInject(R.id.tv)
private TextView tv1;
@ViewInject(R.id.btn)
private Button btn1;
@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();
}
差不多就这样了。