Github地址 https://github.com/wyouflf/xUtils3
github上有详细的使用介绍,本文仅为基本的入门
- xUtils3相对于旧版本:
- HTTP实现替换HttpClient为UrlConnection, 自动解析回调泛型, 更安全的断点续传策略.
- 支持标准的Cookie策略, 区分domain, path...
- 事件注解去除不常用的功能, 提高性能.
- 数据库api简化提高性能, 达到和greenDao一致的性能.
- 图片绑定支持gif, webp; 支持圆角, 圆形, 方形等裁剪, 支持自动旋转...
以上是官方的说明,下面来看具体使用。
Xutils3的使用方式和Xutils有很大的改变,所以请新建一个工程,按照下面的步骤操作:
1、下载类库(类库下载),将下载文件解压,里面有一个jar包和一个文件夹,都复制到lib目录下。
2、添加权限:网络访问权限和SD卡写入权限,这个和Xutils是一样的
3、然后新建一个Application类,在里面对Xutils3做初始化工作,代码如下:
- @Override
- public void onCreate() {
- super.onCreate();
-
- x.Ext.init(this);
-
- x.Ext.setDebug(true);
- }
以上弄完就可以进入使用阶段了。
xutils3和Xutils使用方式有一些区别,以前是使用new得到各模块的对象,现在使用:x.模块名()得到对象,回调接口也使用统一的一个,回调接口支持泛型。
BitMapUtils的使用:
-
- ImageOptions options = new ImageOptions.Builder()
-
- .setIgnoreGif(false)
-
- .setImageScaleType(ScaleType.CENTER_CROP)
-
- .setLoadingDrawableId(R.drawable.ic_launcher)
-
- .setFailureDrawableId(R.drawable.ic_launcher)
-
- .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("下载取消");
- }
- });
-
-
-
-
-
-
-
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.setText(arg0);
- }
- });
viewUtils的使用基本没变,只是绑定点击事件的时候有些出入:
-
- @ViewInject(R.id.txtv)
- private TextView txtv;
- @ViewInject(R.id.imgv)
- private ImageView imgv;
绑定事件:
-
-
-
-
-
-
- @Event(value = R.id.btn, type = View.OnClickListener.class)
- private void btnClick(View view) {
最后来演示DbUtils:
先建一个类,用来生成数据库中的表,这里新建一个DbUtils类(注意里面的@标签的使用,使用这些标签生成表的结构信息)内容如下:
- @Table(name = "info")
- public class DbUils {
- @Column(name = "id", isId = true)
- private int id;
- @Column(name = "name")
- private String name;
- @Column(name = "age")
- private int age;
-
- 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;
- }
-
- }
然后看如何使用:
- DbManager.DaoConfig daoConfig = new DaoConfig()
-
- .setDbName("DbUtils")
-
-
-
-
- .setDbVersion(1)
-
- .setDbUpgradeListener(new DbUpgradeListener() {
- @Override
- public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
- LogUtil.e("数据库版本更新了!");
- }
- });
- DbManager manager = x.getDb(daoConfig);
- try {
-
- DbUtils db = new DbUtils();
- db.setAge(20);
- db.setName("杨");
-
- manager.saveOrUpdate(db);
- //查询 (DbUtils是我写的实体类)
- DbUtils find_db =manager.selector(DbUtils.class).findFirst();
Toast.makeText(MainActivity.this,find_db.getId()+" "+find_db.getName()+" "+
-
find_db.getAge(),Toast.LENGTH_LONG).show();
- } catch (DbException e) {
- e.printStackTrace();
- }