我也是刚刚接触xUtils,目前项目中用到了一些网络方面数据的加载与文件的下载,同事推荐了xUtils这个框架,过来研究一下,希望与同学们共同进步,如有错误请大家指出。
github上对xUtils 3.0是这样介绍的:
- xUtils 包含了很多实用的android工具.
- xUtils 支持超大文件(超过2G)上传,更全面的http请求协议支持(11种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响...
- xUtils 最低兼容Android 4.0 (api level 14). (Android 2.3?)
- xUtils3变化较多所以建立了新的项目不在旧版(github.com/wyouflf/xUtils)上继续维护, 相对于旧版本:
- HTTP实现替换HttpClient为UrlConnection, 自动解析回调泛型, 更安全的断点续传策略.
- 支持标准的Cookie策略, 区分domain, path...
- 事件注解去除不常用的功能, 提高性能.
- 数据库api简化提高性能, 达到和greenDao一致的性能.
- 图片绑定支持gif(受系统兼容性影响, 部分gif文件只能静态显示), webp; 支持圆角, 圆形, 方形等裁剪, 支持自动旋转...
可见xUtils还是一套非常强大而又简洁的框架
一.xUtils的网络请求方面
首先我们要在Application中对xUtils进行初始化操作
1 public class MyApplication extends Application { 2 3 @Override 4 public void onCreate() { 5 super.onCreate(); 6 x.Ext.init(this); 7 x.Ext.setDebug(true); 8 9 } 10 }
在配置文件中添加权限
1 <uses-permission android:name="android.permission.INTERNET" /> 2 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
xUtils在访问网络成功的回调方法中已经做好了子线程与主线程的转换处理,所以在网络访问的成功或失败的回调方法中的代码是在主线程中运行的。
post方式请求网络:
RequestParams params = new RequestParams("http://www.baidu.com");
//添加参数
params.addBodyParameter("username","lisi"); Callback.Cancelable cancelable = x.http().post(params, new Callback.CacheCallback<Object>() { @Override public boolean onCache(Object result) { return false; } @Override public void onSuccess(Object result) { Toast.makeText(MainActivity.this, "访问成功", Toast.LENGTH_SHORT).show(); Log.e("tag", result); } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } });
get方式请求网络:
get方式请求网络的方式大概与post的请求方式相同。
1 Callback.Cancelable cancelable = x.http().get(params, new Callback.CacheCallback<String>() { 2 @Override 3 public boolean onCache(String result) { 4 return false; 5 } 6 7 @Override 8 public void onSuccess(String result) { 9 hello.setText("成功"); 10 Toast.makeText(MainActivity.this, "访问成功", Toast.LENGTH_SHORT).show(); 11 Log.e("tag", result); 12 } 13 14 @Override 15 public void onError(Throwable ex, boolean isOnCallback) { 16 17 } 18 19 @Override 20 public void onCancelled(CancelledException cex) { 21 22 } 23 24 @Override 25 public void onFinished() { 26 27 } 28 });
二.xUtils加载网络图片的方法
在xUtils 3.0的网络图片加载方法中有四个重载的方法,我们分别介绍一下这四种方法的使用(将网络地址的参数替换为本地图片文件路径,是可以加载SD卡中的图片的)
可以直接添加两个参数来将网络图片地址与ImageView进行绑定
1 x.image().bind(imageView,"http://pic33.nipic.com/20131008/13661616_190558208000_2.jpg");
将图片网络地址与ImageView绑定只有,还可以再为ImageView设置一些属性选项
1 ImageOptions imageOptions = new ImageOptions.Builder() 2 .setSize(DensityUtil.dip2px(120), DensityUtil.dip2px(120))//图片大小 3 .setRadius(DensityUtil.dip2px(5))//ImageView圆角半径 4 .setCrop(true)// 如果ImageView的大小不是定义为wrap_content, 不要crop. 5 .setImageScaleType(ImageView.ScaleType.CENTER_CROP) 6 .setLoadingDrawableId(R.mipmap.ic_launcher)//加载中默认显示图片 7 .setFailureDrawableId(R.mipmap.ic_launcher)//加载失败后默认显示图片 8 .build(); 9 10 x.image().bind(imageView,"http://pic33.nipic.com/20131008/13661616_190558208000_2.jpg",imageOptions);
设置一个回调方法来知晓图片加载的成功或失败
1 x.image().bind(imageView, "http://pic33.nipic.com/20131008/13661616_190558208000_2.jpg", new Callback.CommonCallback<Drawable>() { 2 @Override 3 public void onSuccess(Drawable result) { 4 hello.setText("成功"); 5 Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT).show(); 6 } 7 8 @Override 9 public void onError(Throwable ex, boolean isOnCallback) { 10 11 } 12 13 @Override 14 public void onCancelled(CancelledException cex) { 15 16 } 17 18 @Override 19 public void onFinished() { 20 21 } 22 });
设置了ImageView的属性选项,也设置了成功或失败的回调
x.image().bind(imageView,"http://pic33.nipic.com/20131008/13661616_190558208000_2.jpg",imageOptions, new Callback.CommonCallback<Drawable>() { @Override public void onSuccess(Drawable result) { } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } });