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();
} catch (DbException e) {
e.printStackTrace();
}
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();
}
相关文章推荐
- Android 获取View的 left、right、top、buttom、以及x、y坐标的方法
- 对Socket CAN的理解(1)——【CAN总线原理】
- volatile的用法
- easyUI前后台分页代码实现
- POJ 3175 Finding Bovine Roots (暴力求解)
- 按条件刷新
- SqlServer2012自增主键跳跃增长的问题解决方案
- Ansible ad-hoc的command和shell模块的区别
- Ansible ad-hoc的command和shell模块的区别
- 证明增广路算法的正确性及dinic算法的使用
- 链表之一元多项式加法
- model设置属性的封装(存取文件数据,为cell传数据)
- 从OpenCV源码学习cpp_const
- Android的实现文字渐变效果和歌词进度的效果
- 5-14 电话聊天狂人
- 我的第一家实习公司“嘉兴聚变科技有限公司”
- linux top命令中CPU 占用说明
- 安卓圆形TextView实现方法
- sphinx多条件查询
- android高仿京东快报(垂直循环滚动新闻栏)