XUtils使用详解

  • 一. XUtils是什么?
    • 简介
    • 使用前配置
  • 二.XUtils加载图片
    • ImageOption
    • 加载网络图片
    • 加载Android资源图片
    • 加载sd卡图片
  • 三.XUtils请求网络
    • RequestParams
    • get请求
    • post请求
  • 四.使用总结

一. XUtils是什么?

简介

xUtils 包含了orm, http(s), image, view注解, 但依然很轻量级(251K), 并且特性强大, 方便扩展.

  1. orm: 高效稳定的orm工具, 使得http接口实现时更方便的支持cookie和缓存.
    灵活的, 类似linq表达式的接口.和greenDao一致的性能.
  2. http(s): 基于UrlConnection, Android4.4以后底层为okHttp实现.
    请求协议支持11种谓词: GET,POST,PUT,PATCH,HEAD,MOVE,COPY,DELETE,OPTIONS,TRACE,CONNECT
    支持超大文件(超过2G)上传
    支持断点下载(如果服务端支持Range参数,客户端自动处理断点下载)
    支持cookie(实现了domain, path, expiry等特性)
    支持缓存(实现了Cache-Control, Last-Modified, ETag等特性, 缓存内容过多时使用过期时间+LRU双重机制清理)
    支持异步和同步(可结合RxJava使用)调用
  3. image: 有了http(s)及其下载缓存的支持, image模块的实现相当的简洁.
    支持内存缓存, 磁盘缓存(缩略图和原图), 并且支持回收被view持有, 但被MemCache移除的图片, 减少页面回退时的闪烁.
    支持在ListView滑动时, 自动停止被回收复用的item对应的下载任务(再次下载时断点续传)
    支持webp, gif(部分比较老的系统只展示静态图)
    支持圆角, 圆形, 方形等裁剪, 支持自动旋转…
  4. view注解: view注解模块仅仅400多行代码却灵活的支持了各种View注入和事件绑定.
    事件注解支持且不受混淆影响…(参考sample的混淆配置)
    支持绑定拥有多个方法的listener

使用前配置

需要的权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!-- 可选 -->
初始化
// 在application的onCreate中初始化
@Override
public void onCreate() {super.onCreate();x.Ext.init(this);x.Ext.setDebug(BuildConfig.DEBUG); // 是否输出debug日志, 开启debug会影响性能....
}
AndroidManifest.xml文件application 节点里添加
android:requestLegacyExternalStorage="true"
android:usesCleartextTraffic="true"

在使用注解的地方需要绑定

x.view().inject(this);//没有用到view注解可以先不用

二.XUtils加载图片

ImageOption

ImageOption是xutils中的一个类,我们在加载图片时如果对加载的图片做一些处理,比如设置大小和圆角,可以通过ImageOption来进行处理。

  private  ImageOptions getImageOptions(){ImageOptions imageOptions = new ImageOptions.Builder().setSize(DensityUtil.dip2px(120), DensityUtil.dip2px(120))//设置大小.setRadius(DensityUtil.dip2px(30))//设置圆角半径.setCrop(true)//如果ImageView的大小不是定义为wrap_content, 不要crop.setImageScaleType(ImageView.ScaleType.CENTER_CROP).setLoadingDrawableId(R.drawable.ic_launcher_background)//加载中显示.setFailureDrawableId(R.drawable.ic_launcher_foreground)//失败时显示.build();//建造者设计模式return imageOptions;}

加载网络图片

1.简单加载

imageOptions = getImageOptions();
x.image().bind(imageView, "https://cdn.xiaoz.me/wp-content/uploads/2018/12/shibie_600.jpg");

2.带有回调的加载

imageOptions = getImageOptions();x.image().bind(imageView, "https://img0.utuku.china.com/640x0/news/20200517/734aa0ad-2843-4073-b370-f168fd56bc38.jpg", new Callback.CommonCallback<Drawable>() {@Overridepublic void onSuccess(Drawable result) {showToast("图片加载成功");}@Overridepublic void onError(Throwable ex, boolean isOnCallback) {showToast("网址错误");}@Overridepublic void onCancelled(CancelledException cex) {showToast("图片加载取消");}@Overridepublic void onFinished() {showToast("图片加载结束");}});

3.带有缓存回调的图片加载

   x.image().bind(imageView, "https://img0.utuku.china.com/640x0/news/20200517/734aa0ad-2843-4073-b370-f168fd56bc38.jpg", new Callback.CacheCallback<Drawable>() {@Overridepublic boolean onCache(Drawable result) {return true;}@Overridepublic void onSuccess(Drawable result) {showToast("图片加载成功");}@Overridepublic void onError(Throwable ex, boolean isOnCallback) {showToast("网址错误");}@Overridepublic void onCancelled(CancelledException cex) {showToast("图片加载取消");}@Overridepublic void onFinished() {showToast("图片加载结束");}});

加载Android资源图片

1.加载assert目录下的资源

x.image().bind(imageView, "assets://test.gif", imageOptions);

2.加载res/drawable目录下资源

x.image().bind(imageView, "res://"+R.drawable.test);

加载sd卡图片

加载sd卡图片

 x.image().bind(imageView, "file:///sdcard/Pictures/pic/photo.png");

三.XUtils请求网络

RequestParams

RequestParam同样是xutils中的一个类,我们可以在构造函数中传入url

  RequestParams params = new RequestParams("http://xxxx:8080/user/login");

如果需要携带参数,可以通过下列方式添加

   params.addBodyParameter("userAccount", "1001");params.addBodyParameter("userPwd", "123456");

get请求

x.http().get(params, new Callback.CacheCallback<String>() {.....})

post请求

同步请求(阻塞主线程,不建议使用)

   x.http().postSync(params, String.class);

异步请求

 RequestParams params = new RequestParams("http://1xxxx:8080/user/login");params.addBodyParameter("userAccount", "1001");params.addBodyParameter("userPwd", "123456");x.http().post(params, new Callback.CommonCallback<String>() {@Overridepublic void onSuccess(String result) {Log.d("xutils", "success");JSONObject json = JSON.parseObject(result);if(json.getString("res").equals("success")){showToast("登录成功");}else{showToast("登录失败");}}@Overridepublic void onError(Throwable ex, boolean isOnCallback) {showToast("网址错误或者网络不可用");}@Overridepublic void onCancelled(CancelledException cex) {showToast("登录被取消");}@Overridepublic void onFinished() {Log.d("xutils", "finish");showToast("OnFinish最后被回调");}});

四.使用总结

最后,还有关于数据库的操作没有谈到,可以参考这篇博客
Android xUtils框架最全使用详解

个人使用感受:Xutils使用方便,集合了几种框架于一体,至少结合了Okhttp + Glide + ButterKnife+GreenDAO.是一款非常不错的框架,强推。Xutils的源码也写的比较容易看懂,建议大家阅读。

最后30s向大家推荐一个小白获取资源的绝佳场所,对,你只需要白嫖!
群号:705884058

【Android】XUtils——你值得拥有!相关推荐

  1. android xUtils的使用

    gethub地址:https://github.com/wyouflf/xUtils/ xUtils简介 xUtils 包含了很多实用的android工具. xUtils 支持大文件上传,更全面的ht ...

  2. android xUtils 2.6.14 jar 下载 使用 和混淆

    一.ViewUtils 你受够了重复冗长的findViewById了嘛?你受够了各种监听事件的绑定了嘛?在这里,你只需要一句注解,如@ViewInject.@OnClick,就能轻松摆脱小白似的代码, ...

  3. android xutils框架缓存图片,xUtils框架的使用

    xUtils简介 xUtils 包含了很多实用的android工具,xUtils 源于Afinal框架,对Afinal进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持,拥有 ...

  4. Android xUtils框架解析

    xUtils简介 xUtils是基于Afinal开发的目前功能比较完善的一个Android开源框架,最近又发布了xUtil3.0,在增加新功能的同时又提高了框架的性能,下面来看看官方(https:// ...

  5. android xutils json请求,Android Xutils3网络请求的封装详解及实例代码

    Xutils3网络请求的封装详解 封装了一个Xutil3的网络请求工具类,分享给大家,本人水平有限,不足之处欢迎指出. 使用前先配置xutils3: 1.gradle中添加 compile 'org. ...

  6. Android Xutils和Xutils3的基本使用

    这几天把公司的电商软件第一版完成之后,打算把项目重新优化并排版一下,让软件整体看起来更加美观.作为一名优(lan)雅(duo)的程序猿,一定要时刻保持优雅的情操,比如FindViewById()和Se ...

  7. android xutils 教程,Android AS为xutils添加依赖过程图解

    在使用xutils时遇到不能添加以来的问题,花了很长时间终于解决,网上添加依赖的方法很多,在此针对个人出现的问题作下笔记. 我本想使用jar包,因为在使用smartImageView时是用的jar包来 ...

  8. android xutils数据库操作,XUtils3.0之本地数据库操作

    5](http://mvnrepository.com/)找到对应的版本 compile 'org.xutils:xutils:3.0' -->build project Paste_Image ...

  9. android xutils json请求,Android中的xutils框架在访问服务器时如何携带json数据

    xutils框架的httputils在访问服务器时如何像HttpURLConnection一样携带json数据 HttpURLConnection携带数据的案例,使用put请求: URL url; H ...

最新文章

  1. 33 张图详解 RSTP 、MSTP、替代技术
  2. finereport连接oracle_FINEREPORT连接远程ORACLE数据库
  3. SQLServer 常见高CPU利用率原因
  4. 英特尔cpu发布时间表_10纳米来了:英特尔十一代酷睿上市,性能提升20%,AI算力乘5倍...
  5. 20141203图片Base64编码与解码
  6. Confluence 6 使用 Apache 和 mod_proxy 添加 SSL和其他
  7. centos7 网卡配置vlan_CentOS7网卡创建vlan步骤
  8. 二叉树的几种遍历方法
  9. 20101022网站更新部署
  10. 第三章:3.4 处理登陆的请求
  11. 38.Linux/Unix 系统编程手册(下) -- 编写安全的特权程序
  12. JUC与JVM并发编程学习笔记02
  13. linux go missing git command,go: missing Git command的解决办法
  14. 万年历打印Java_java实验之打印万年历
  15. XTTS V4.3 跨平台迁移12.1.2 HPUX ->Oracle Linux
  16. 完全平方数-动态规划
  17. 12 款适用于开发人员的最佳 Web 开发软件
  18. 【应急响应】域名劫持事件发生后的应急响应策略
  19. 键盘忍者:无需鼠标即可启动任何应用程序
  20. Vim 为什么把 HJKL 当作光标键?

热门文章

  1. heroku常用命令示例(一)
  2. 转载——卡尔达诺公式推导
  3. 使用复值深度神经网络逆合成孔径雷达成像
  4. 调用雅虎API获取全球天气
  5. 测试管理之--管理制度
  6. Google正在研究利用海底通讯光缆中的偏振光实现海洋遥感
  7. html怎样设置背景放射线,PPT怎么设计放射线效果背景图
  8. Windows 7自动登录
  9. inux学习笔记:14-1.rpm包
  10. 用html代码编写朋友圈发现页,探探新增“发现”页,长得太像微信朋友圈了?...