xUtils2和xUtils3的使用及区别

本人看 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个模块的使用:

权限必须得有:

    <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)上继续维护, 相对于旧版本:
    1. HTTP实现替换HttpClient为UrlConnection, 自动解析回调泛型, 更安全的断点续传策略.
    2. 支持标准的Cookie策略, 区分domain, path...
    3. 事件注解去除不常用的功能, 提高性能.
    4. 数据库api简化提高性能, 达到和greenDao一致的性能.
    5. 图片绑定支持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();
        }



差不多就这样了。


  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个Android基于快速开发的一个框架 xUtils 它是在aFinal基础上进行重构和扩展的框架 相比aFinal有很大的改善 同时 如果如果你的应用是基于网络的 那么只要处理得当 它会让你彻底的摆脱各种工具类和重复代码的困扰 xUtils 包含了很多实用的android工具 xUtils 源于Afinal框架 对Afinal进行了大量重构 使得xUtils支持大文件上传 更全面的http请求协议支持 拥有更加灵活的ORM 更多的事件注解支持且不受混淆影响 xUtils的四大组件: 一 ViewUtils 你受够了重复冗长的findViewById了嘛 你受够了各种监听事件的绑定了嘛 在这里 你只需要一句注解 如@ViewInject @OnClick 就能轻松摆脱小白似的代码 大大的上了一个档次 二 HttpUtils 支持的HTTP七种请求方式 非常便捷的满足你的接口请求的需要 同时还支持大文件上传下载 以及同步异步请求 三 BitmapUtils 你的程序因OOM强制关闭过嘛 你在为加在网络图片头疼嘛 有了组件 你将永久摆脱前面的问题 四 DbUtils 简单易用又出色的ORM框架 真的是谁用谁知道 直接轻松存储各种对象到sqlite数据库中 同时也能非常方便的进行各种条件查询 甚至分页查询 还有对表中数据的更新删除等操作 真正的实现 一行代码就可以进行增删改查 并且可通过注解自定义表名 列名 外键 唯一性约束 NOT NULL约束 CHECK约束等 支持事务 摘自github ">一个Android基于快速开发的一个框架 xUtils 它是在aFinal基础上进行重构和扩展的框架 相比aFinal有很大的改善 同时 如果如果你的应用是基于网络的 那么只要处理得当 它会让你彻底的摆脱各种工具类和重复代码的困扰 [更多]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值