您的位置:首页 > 其它

Xutils3入门

2016-07-28 19:12 351 查看
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做初始化工作,代码如下:

[java] view
plain copy

 print?

@Override  

public void onCreate() {  

    super.onCreate();  

    // 初始化  

    x.Ext.init(this);  

    // 设置是否输出debug  

    x.Ext.setDebug(true);  

}  

以上弄完就可以进入使用阶段了。
xutils3和Xutils使用方式有一些区别,以前是使用new得到各模块的对象,现在使用:x.模块名()得到对象,回调接口也使用统一的一个,回调接口支持泛型。
BitMapUtils的使用:

[java] view
plain copy

 print?

// 设置加载图片的参数  

        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("下载取消");  

            }  

        });  

        // 加载本地图片  

        // x.image().bind(imgv, "assets://test.gif", options);  

        // x.image().bind(iv_big_img, new  

        // File("/sdcard/test.gif").toURI().toString(), imageOptions);  

        // x.image().bind(iv_big_img, "/sdcard/test.gif", imageOptions);  

        // x.image().bind(iv_big_img, "file:///sdcard/test.gif", imageOptions);  

        // x.image().bind(iv_big_img, "file:/sdcard/test.gif", imageOptions);  

HttpUtlis的使用:

[b][java]
 view
plain copy

 print?

// 请求参数  

    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的使用基本没变,只是绑定点击事件的时候有些出入:

[java] view
plain copy

 print?

// 使用ViewUtils绑定控件  

    @ViewInject(R.id.txtv)  

    private TextView txtv;  

    @ViewInject(R.id.imgv)  

    private ImageView imgv;  

绑定事件:

[java] view
plain copy

 print?

/** 

 * 使用BitmapUtils显示图片 

 *  

 * 使用ViewUtils设置按钮的点击事件,方法必须要私有化, 参数格式和type的参数一致,为了混淆方便,方法名要以Event或者Click结尾 

 * type可以不写,默认是点击事件类型 

 */  

@Event(value = R.id.btn, type = View.OnClickListener.class)  

private void btnClick(View view) {  

最后来演示DbUtils:
先建一个类,用来生成数据库中的表,这里新建一个DbUtils类(注意里面的@标签的使用,使用这些标签生成表的结构信息)内容如下:

[java] view
plain copy

 print?

@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;  

    }  

  

}  

然后看如何使用:

[java] view
plain copy

 print?

DbManager.DaoConfig daoConfig = new DaoConfig()  

            // 数据库的名字  

            .setDbName("DbUtils")  

            // 保存到指定路径  

            // .setDbDir(new  

            // File(Environment.getExternalStorageDirectory().getAbsolutePath()))  

            // 数据库的版本号  

            .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();  

    }  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: