2024年4月4日发(作者:)

Xutils是前两年很火的一个三方库(githup地址),是一个工具类,分为4个模块:

DbUtils、HttpUtils、ViewUtils、BitmapUtils,还有一个非常使用功能就是LogUtils,

可以用来输出Log日志。这个第三方库已经很久没有更新了,对最新的6.0系统支持也不

是很好,所以现在出了一个新的Xutils3(githup地址),今天就来看看新的Xutils3有什么

改变。

我们先来看看Xutils的4个模块的使用:

使用记得加上权限:

android:name="_EXTERNAL_STORAGE" />

dBUtils:

用来操作数据库

//创建数据库

DbUtils dUtils = (, "Student");

try {

//创建表,表名为包名_StudentInfo

TableIfNotExist();

} catch (DbException e) {

tackTrace();

}

BitmapUtils:

用来加载ImageView的图片资源,可以加载本地、网络

BitmapUtils bUtils = new BitmapUtils(this);

y(imgv,"/uploadImages/2013/221/J

");

viewUtils:

可以用来代替findViewbyId,也可以用来给控件添加点击事件

// 使用ViewUtils绑定控件

@ViewInject(roup)

private RadioGroup rg;

@ViewInject()

private ImageView imgv;

@ViewInject(1)

private TextView txtv;

// ViewUtils支持绑定点击事件

@OnClick()

public void btnShow(View view) {

记得在Activity的oncreate方法里面写上下面的代码:

// 注入绑定事件

(this);

HttpUtils:

用来上传文件,下载文件

HttpUtils hUtils = new HttpUtils(5 * 1000);

(, "/qq379454816",

new RequestCallBack() {

@Override

public void onSuccess(ResponseInfo responseInfo) {

t();

}

@Override

public void onFailure(HttpException error, String msg) {

t(sage() + "," + msg);

}

});

最后来演示一个LogUtils的使用:

//设置是否允许输出对应级别的,false为不输出

=false;

//以error的形式输出日志

LogUtils.e("ViewUtils调用成功!");

ok,就简单地介绍一下其使用,4个主要模块使用还是有一定规律的,除了DbUtils

使用create创建对象外其余的3个模块都是使用new创建对象。下面来看下Xutils3:

xUtils3变化较多所以建立了新的项目不在旧版(/wyouflf/xUtils)上继续

维护, 相对于旧版本:

1. HTTP实现替换HttpClient为UrlConnection, 自动解析回调泛型, 更安全的

断点续传策略.

2. 支持标准的Cookie策略, 区分domain,

3. 事件注解去除不常用的功能, 提高性能.

4. 数据库api简化提高性能, 达到和greenDao一致的性能.

5. 图片绑定支持gif, webp; 支持圆角, 圆形, 方形等裁剪, 支持自动旋转...

以上是官方的说明,下面来看具体使用。

Xutils3的使用方式和Xutils有很大的改变,所以请新建一个工程,按照下面的步骤操

作:

1、下载类库(类库下载),将下载文件解压,里面有一个jar包和一个文件夹,都复制

到lib目录下。

2、添加权限:网络访问权限和SD卡写入权限,这个和Xutils是一样的

3、然后新建一个Application类,在里面对Xutils3做初始化工作,代码如下:

@Override

public void onCreate() {

te();

// 初始化

(this);

// 设置是否输出debug

ug(true);

}

以上弄完就可以进入使用阶段了。

xutils3和Xutils使用方式有一些区别,以前是使用new得到各模块的对象,现在使

用:x.模块名()得到对象,回调接口也使用统一的一个,回调接口支持泛型。

BitMapUtils的使用:

// 设置加载图片的参数

ImageOptions options = new r()

// 是否忽略GIF格式的图片

.setIgnoreGif(false)

// 图片缩放模式

.setImageScaleType(_CROP)

// 下载中显示的图片

.setLoadingDrawableId(_launcher)

// 下载失败显示的图片

.setFailureDrawableId(_launcher)

// 得到ImageOptions对象

.build();

// 加载图片

().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("下载出错," + sage());

}

@Override

public void onCancelled(CancelledException arg0) {

LogUtil.e("下载取消");

}

});

// 加载本地图片

// ().bind(imgv, "assets://", options);

// ().bind(iv_big_img, new

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

// ().bind(iv_big_img, "/sdcard/", imageOptions);

// ().bind(iv_big_img, "file:///sdcard/", imageOptions);

// ().bind(iv_big_img, "file:/sdcard/", imageOptions);

HttpUtlis的使用:

// 请求参数

RequestParams params = new RequestParams("");

().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上面

t(arg0);

}

});

viewUtils的使用基本没变,只是绑定点击事件的时候有些出入:

// 使用ViewUtils绑定控件

@ViewInject()

private TextView txtv;

@ViewInject()

private ImageView imgv;

绑定事件:

/**

* 使用BitmapUtils显示图片

*

* 使用ViewUtils设置按钮的点击事件,方法必须要私有化, 参数格式和type的参数

一致,为了混淆方便,方法名要以Event或者Click结尾

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

*/

@Event(value = , type = )

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;

public int getId() {

return id;

}

public void setId(int id) {

= id;

}

public String getName() {

return name;

}

public void setName(String name) {

= name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

= age;

}

}

然后看如何使用:

fig daoConfig = new DaoConfig()

// 数据库的名字

.setDbName("SudentInfo")

// 保存到指定路径

// .setDbDir(new

// File(ernalStorageDirectory().getAbsolutePath()))

// 数据库的版本号

.setDbVersion(1)

// 数据库版本更新监听

.setDbUpgradeListener(new DbUpgradeListener() {

@Override

public void onUpgrade(DbManager arg0, int arg1, int arg2) {

LogUtil.e("数据库版本更新了!");

}

});

DbManager manager = (daoConfig);

try {

//创建对象,用来生成表

StudentInfo info = new StudentInfo();

(16);

e("小花");

//创建表

Update(info);

} catch (DbException e) {

tackTrace();

}

ok,Xutils3的使用就简单的简绍了一下使用思路,其实知道了使用步骤,一个第三方

的库的使用还是很简单的