Xutils3的使用
Posted oooohuhu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xutils3的使用相关的知识,希望对你有一定的参考价值。
Xutils是前两年很火的一个三方库(githup地址),是一个工具类,分为4个模块:DbUtils、HttpUtils、ViewUtils、 BitmapUtils,还有一个非常使用功能就是LogUtils,可以用来输出Log日志。这个第三方库已经很久没有更新了,对最新的6.0系统支持 也不是很好,所以现在出了一个新的Xutils3(githup地址),今天就来看看新的Xutils3有什么改变。
我们先来看看Xutils的4个模块的使用:
使用记得加上权限:
1 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
2 <uses-permission android:name="android.permission.INTERNET" />
dBUtils:
用来操作数据库
//创建数据库
1 DbUtils dUtils = DbUtils.create(MainActivity.this, "Student"); 2 try { 3 //创建表,表名为包名_StudentInfo 4 dUtils.createTableIfNotExist(StudentInfo.class); 5 } catch (DbException e) { 6 e.printStackTrace(); 7 }
BitmapUtils:
用来加载ImageView的图片资源,可以加载本地、网络
1 BitmapUtils bUtils = new BitmapUtils(this); 2 bUtils.display(imgv,"http://image.tianjimedia.com/uploadImages/2013/221/JGR58NXB5V62.jpg");
viewUtils:
可以用来代替findViewbyId,也可以用来给控件添加点击事件
-
1 // 使用ViewUtils绑定控件 2 @ViewInject(R.id.radioGroup) 3 private RadioGroup rg; 4 @ViewInject(R.id.imgv) 5 private ImageView imgv; 6 @ViewInject(R.id.txtv1) 7 private TextView txtv; 8 9 // ViewUtils支持绑定点击事件 10 @OnClick(R.id.btn) 11 public void btnShow(View view) { 12 13 记得在Activity的oncreate方法里面写上下面的代码: 14 15 // 注入绑定事件 16 ViewUtils.inject(this);
HttpUtils:
用来上传文件,下载文件
1 HttpUtils hUtils = new HttpUtils(5 * 1000); 2 hUtils.send(HttpMethod.GET, "http://blog.csdn.net/qq379454816", 3 new RequestCallBack<String>() { 4 @Override 5 public void onSuccess(ResponseInfo<String> responseInfo) { 6 txtv.setText(responseInfo.result); 7 } 8 @Override 9 public void onFailure(HttpException error, String msg) { 10 txtv.setText(error.getMessage() + "," + msg); 11 } 12 });
最后来演示一个LogUtils的使用:
1 //设置是否允许输出对应级别的,false为不输出 2 LogUtils.allowE=false; 3 //以error的形式输出日志 4 LogUtils.e("ViewUtils调用成功!");
ok,就简单地介绍一下其使用,4个主要模块使用还是有一定规律的,除了DbUtils使用create创建对象外其余的3个模块都是使用new创建对象。下面来看下Xutils3:
- xUtils3变化较多所以建立了新的项目不在旧版(github.com/wyouflf/xUtils)上继续维护, 相对于旧版本:
- HTTP实现替换HttpClient为UrlConnection, 自动解析回调泛型, 更安全的断点续传策略.
- 支持标准的Cookie策略, 区分domain, path...
- 事件注解去除不常用的功能, 提高性能.
- 数据库api简化提高性能, 达到和greenDao一致的性能.
- 图片绑定支持gif, webp; 支持圆角, 圆形, 方形等裁剪, 支持自动旋转...
以上是官方的说明,下面来看具体使用。
Xutils3的使用方式和Xutils有很大的改变,所以请新建一个工程,按照下面的步骤操作:
1、下载类库(类库下载),将下载文件解压,里面有一个jar包和一个文件夹,都复制到lib目录下。
2、添加权限:网络访问权限和SD卡写入权限,这个和Xutils是一样的
3、然后新建一个Application类,在里面对Xutils3做初始化工作,代码如下:
1 @Override 2 public void onCreate() { 3 super.onCreate(); 4 // 初始化 5 x.Ext.init(this); 6 // 设置是否输出debug 7 x.Ext.setDebug(true); 8 }
以上弄完就可以进入使用阶段了。
xutils3和Xutils使用方式有一些区别,以前是使用new得到各模块的对象,现在使用:x.模块名()得到对象,回调接口也使用统一的一个,回调接口支持泛型。
BitMapUtils的使用:
1 // 设置加载图片的参数 2 ImageOptions options = new ImageOptions.Builder() 3 // 是否忽略GIF格式的图片 4 .setIgnoreGif(false) 5 // 图片缩放模式 6 .setImageScaleType(ScaleType.CENTER_CROP) 7 // 下载中显示的图片 8 .setLoadingDrawableId(R.drawable.ic_launcher) 9 // 下载失败显示的图片 10 .setFailureDrawableId(R.drawable.ic_launcher) 11 // 得到ImageOptions对象 12 .build(); 13 // 加载图片 14 x.image().bind(imgv, imagUrl, options, new CommonCallback<Drawable>() { 15 @Override 16 public void onSuccess(Drawable arg0) { 17 LogUtil.e("下载成功"); 18 } 19 @Override 20 public void onFinished() { 21 LogUtil.e("下载完成"); 22 } 23 @Override 24 public void onError(Throwable arg0, boolean arg1) { 25 LogUtil.e("下载出错," + arg0.getMessage()); 26 } 27 @Override 28 public void onCancelled(CancelledException arg0) { 29 LogUtil.e("下载取消"); 30 } 31 }); 32 // 加载本地图片 33 // x.image().bind(imgv, "assets://test.gif", options); 34 // x.image().bind(iv_big_img, new 35 // File("/sdcard/test.gif").toURI().toString(), imageOptions); 36 // x.image().bind(iv_big_img, "/sdcard/test.gif", imageOptions); 37 // x.image().bind(iv_big_img, "file:///sdcard/test.gif", imageOptions); 38 // x.image().bind(iv_big_img, "file:/sdcard/test.gif", imageOptions);
HttpUtlis的使用:
1 // 请求参数 2 RequestParams params = new RequestParams("http://www.baidu.com"); 3 x.http().get(params, new CommonCallback<String>() { 4 @Override 5 public void onCancelled(CancelledException arg0) { 6 } 7 @Override 8 public void onError(Throwable arg0, boolean arg1) { 9 } 10 @Override 11 public void onFinished() { 12 } 13 @Override 14 public void onSuccess(String arg0) { 15 // 成功下载,显示到txtv上面 16 txtv.setText(arg0); 17 } 18 });
viewUtils的使用基本没变,只是绑定点击事件的时候有些出入:
1 // 使用ViewUtils绑定控件 2 @ViewInject(R.id.txtv) 3 private TextView txtv; 4 @ViewInject(R.id.imgv) 5 private ImageView imgv;
绑定事件:
1 /** 2 * 使用BitmapUtils显示图片 3 * 4 * 使用ViewUtils设置按钮的点击事件,方法必须要私有化, 参数格式和type的参数一致,为了混淆方便,方法名要以Event或者Click结尾 5 * type可以不写,默认是点击事件类型 6 */ 7 @Event(value = R.id.btn, type = View.OnClickListener.class) 8 private void btnClick(View view) {
1 /** 2 * 使用BitmapUtils显示图片 3 * 4 * 使用ViewUtils设置按钮的点击事件,方法必须要私有化, 参数格式和type的参数一致,为了混淆方便,方法名要以Event或者Click结尾 5 * type可以不写,默认是点击事件类型 6 */ 7 @Event(value = R.id.btn, type = View.OnClickListener.class) 8 private void btnClick(View view) {
最后来演示DbUtils:
先建一个类,用来生成数据库中的表,这里新建一个StudentInfo类(注意里面的@标签的使用,使用这些标签生成表的结构信息)内容如下:
1 @Table(name = "info") 2 public class StudentInfo { 3 @Column(name = "id", isId = true) 4 private int id; 5 @Column(name = "name") 6 private String name; 7 @Column(name = "age") 8 private int age; 9 public int getId() { 10 return id; 11 } 12 public void setId(int id) { 13 this.id = id; 14 } 15 public String getName() { 16 return name; 17 } 18 public void setName(String name) { 19 this.name = name; 20 } 21 public int getAge() { 22 return age; 23 } 24 public void setAge(int age) { 25 this.age = age; 26 } 27 } 28 29 然后看如何使用: 30 31 DbManager.DaoConfig daoConfig = new DaoConfig() 32 // 数据库的名字 33 .setDbName("SudentInfo") 34 // 保存到指定路径 35 // .setDbDir(new 36 // File(Environment.getExternalStorageDirectory().getAbsolutePath())) 37 // 数据库的版本号 38 .setDbVersion(1) 39 // 数据库版本更新监听 40 .setDbUpgradeListener(new DbUpgradeListener() { 41 @Override 42 public void onUpgrade(DbManager arg0, int arg1, int arg2) { 43 LogUtil.e("数据库版本更新了!"); 44 } 45 }); 46 DbManager manager = x.getDb(daoConfig); 47 try { 48 //创建对象,用来生成表 49 StudentInfo info = new StudentInfo(); 50 info.setAge(16); 51 info.setName("小花"); 52 //创建表 53 manager.saveOrUpdate(info); 54 } catch (DbException e) { 55 e.printStackTrace(); 56 }
下载xutils3jar包:http://download.csdn.net/detail/sinat_32804317/9551171
以上是关于Xutils3的使用的主要内容,如果未能解决你的问题,请参考以下文章