本文目录

  • xUtils3简介
  • xUtils使用方法
    • 使用前准备
    • 功能1:访问网络
      • 不带参数的网络请求
      • 带参数的请求
    • 功能2:加载网络图片
    • 功能3:框架注解
      • 布局文件注解
      • 控件注解
      • 点击事件注解
    • 功能4:数据库映射
      • 增加数据
      • 删除数据
      • 修改数据
      • 查询数据

xUtils3简介

xUtils 包含了orm, http(s), image, view注解, 但依然很轻量级(251K), 并且特性强大, 方便扩展.
官网:https://github.com/wyouflf/xUtils3

xUtils使用方法

使用前准备

第一步:引入

implementation 'org.xutils:xutils:3.8.5'

第二步:添加权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

AndroidManifest.xml文件application 节点里添加

android:requestLegacyExternalStorage="true"
android:usesCleartextTraffic="true"

第三步:MainActivity中添加

x.Ext.init(getApplication());
x.Ext.setDebug(BuildConfig.DEBUG);// 是否输出debug日志, 开启debug会影响性能.
x.view().inject(this);//没有用到view注解可以先不用

功能1:访问网络

不带参数的网络请求

不带缓存

RequestParams params = new RequestParams("http://baidu.com");
x.http().get(params, new Callback.CommonCallback<String>() {@Overridepublic void onSuccess(String result) {}@Overridepublic void onError(Throwable ex, boolean isOnCallback) {}@Overridepublic void onCancelled(CancelledException cex) {}@Overridepublic void onFinished() {}
});

带缓存

RequestParams params = new RequestParams("http://baidu.com");
x.http().get(params, new Callback.CacheCallback<String>() {@Overridepublic boolean onCache(String result) {return false;}@Overridepublic void onSuccess(String result) {Log.i("MainActivity", result);}@Overridepublic void onError(Throwable ex, boolean isOnCallback) {Log.i("MainActivity", ex.getMessage());}@Overridepublic void onCancelled(CancelledException cex) {}@Overridepublic void onFinished() {}
});

带参数的请求

RequestParams params = new RequestParams("https://www.baidu.com/s");// params.setSslSocketFactory(...); // 如果需要自定义SSL
params.addQueryStringParameter("wd", "xUtils");

功能2:加载网络图片

ImageOptions imageOptions;
imageOptions = new ImageOptions.Builder().setSize(DensityUtil.dip2px(120), DensityUtil.dip2px(120)).setRadius(DensityUtil.dip2px(5))// 如果ImageView的大小不是定义为wrap_content, 不要crop..setCrop(true) // 很多时候设置了合适的scaleType也不需要它.// 加载中或错误图片的ScaleType//.setPlaceholderScaleType(ImageView.ScaleType.MATRIX).setImageScaleType(ImageView.ScaleType.CENTER_CROP).setLoadingDrawableId(R.mipmap.ic_launcher).setFailureDrawableId(R.mipmap.ic_launcher).build();
// 加载网络图片
x.image().bind(imageView, url, imageOptions);// 加载本地assets目录的图片
x.image().bind(imageView, "assets://test.gif", imageOptions);// resources file
x.image().bind(imageView, "res://" + R.minimap.test, imageOptions);// local file
x.image().bind(imageView, new File("/sdcard/test.gif").toURI().toString(), imageOptions);
x.image().bind(imageView, "/sdcard/test.gif", imageOptions);
x.image().bind(imageView, "file:///sdcard/test.gif", imageOptions);
x.image().bind(imageView, "file:/sdcard/test.gif", imageOptions);x.image().bind(imageView, url, imageOptions, new Callback.CommonCallback<Drawable>() {...});
x.image().loadDrawable(url, imageOptions, new Callback.CommonCallback<Drawable>() {...});
// 用来获取缓存文件
x.image().loadFile(url, imageOptions, new Callback.CommonCallback<File>() {...});

功能3:框架注解

布局文件注解

//替代onCreate方法中的    setContentView(R.layout.activity_main);
@ContentView(R.layout.activity_main)
public class MainActivity extends AppCompatActivity {}

控件注解

@ViewInject(R.id.textView)
private TextView mTextView;

点击事件注解

单个点击事件

/*** 1. 方法必须私有限定,* 2. 方法参数形式必须和type对应的Listener接口一致.* 3. 注解参数value支持数组: value={id1, id2, id3}* 4. 其它参数说明见{@link org.xutils.event.annotation.Event}类的说明.**/
@Event(value = R.id.btn_test1,type = View.OnClickListener.class/*可选参数, 默认是View.OnClickListener.class*/)
private void onTest1Click(View view) {...
}

多个点击事件

@Event(value = {R.id.button,R.id.button2},type = View.OnClickListener.class/*可选参数, 默认是View.OnClickListener.class*/)
private void onTest1Click(View view) {switch (view.getId()){case R.id.button:Log.i("MainActivity", "button1 click");break;case R.id.button2:Log.i("MainActivity", "button2 click");break;}
}

功能4:数据库映射

下面以单表为例演示xUtils框架怎么对数据库进行增删改查操作
首先添加一个实体类,在实体类上加一个注解

package com.hnu.sqlite.db;import org.xutils.db.annotation.Column;
import org.xutils.db.annotation.Table;@Table(name = "user")
public class User {@Column(name = "id", isId = true)private int id;@Column(name = "username")private String username;@Column(name = "password")private String password;@Column(name = "age")private int age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +", age=" + age +'}';}
}

在对数据库操作前,先创建DaoConfig 对象

    DbManager.DaoConfig daoConfig = new DbManager.DaoConfig().setDbName("test.db")// 不设置dbDir时, 默认存储在app的私有目录.// .setDbDir(new File("/sdcard")) // "sdcard"的写法并非最佳实践, 这里为了简单, 先这样写了..setDbVersion(2).setDbOpenListener(new DbManager.DbOpenListener() {@Overridepublic void onDbOpened(DbManager db) {// 开启WAL, 对写入加速提升巨大db.getDatabase().enableWriteAheadLogging();}}).setDbUpgradeListener(new DbManager.DbUpgradeListener() {@Overridepublic void onUpgrade(DbManager db, int oldVersion, int newVersion) {// TODO: ...// db.addColumn(...);// db.dropTable(...);// ...// or// db.dropDb();}});

增加数据

 DbManager db = null;try {db = x.getDb(daoConfig);User user = new User();user.setUsername("test"+System.currentTimeMillis());user.setPassword("passwd");user.setAge(30);db.save(user);} catch (DbException e) {e.printStackTrace();return;}

删除数据

根据id 删除

DbManager db = null;
try {db = x.getDb(daoConfig);User user = new User();user.setId(2);db.delete(user);
} catch (DbException e) {e.printStackTrace();return;
}

根据条件删除

DbManager db = null;
try {  db = x.getDb(daoConfig);db.delete(User.class,WhereBuilder.b("username", "=", "test"));} catch (DbException e) {e.printStackTrace();return;
}

修改数据

根据id修改

try { DbManager db = null;db = x.getDb(daoConfig);User user = new User();user.setId(1);user.setUsername("new user");user.setPassword("new passwd");user.setAge(30);db.saveOrUpdate(user);// db.update(user);或者用这个方法修改} catch (DbException e) {e.printStackTrace();return;}

根据条件修改

try {  DbManager db = null;db = x.getDb(daoConfig);db.update(User.class, WhereBuilder.b("username", "=", "test"),
// WhereBuilder.b("id", "=", 1).and("isAdmin", "=", true).,new KeyValue("username", "test_name"), new KeyValue("password", "new pss"));
} catch (DbException e) {e.printStackTrace();return;
}

查询数据

DbManager db = null;
try {// 删除1db = x.getDb(daoConfig);List<User> users = new ArrayList<>();users= db.selector(User.class).orderBy("id", true).limit(1000).where("username","=","test").findAll();
// users= db.selector(User.class).orderBy("id", true).limit(1000).findAll();
// users= db.selector(User.class).findAll();for (User user : users){Log.i("testdb","test" + user);}} catch (DbException e) {e.printStackTrace();return;
}

Android xUtils框架最全使用详解相关推荐

  1. Android Binder框架实现之Parcel详解之基本数据的读写

       Android Binder框架实现之Parcel详解之基本数据的读写 Android Binder框架实现目录: Android Binder框架实现之Binder的设计思想 Android ...

  2. Android Binder框架实现之bindService详解

        Android Binder框架实现之bindService详解 Android Binder框架实现目录: Android Binder框架实现之Binder的设计思想 Android Bi ...

  3. Android ORM框架 GreenDao 的使用详解

    一.前言 关于 Android 中常用的数据存储方式我们前面已经讲了 Sp 存储 和 文件存储,但是对于数据量比较大,并且结构复杂的数据我们想要存储只能通过数据库进行处理,Android 中提供了一个 ...

  4. Java持久层框架MyBatis全注解详解

    org.apache.ibatis.annotations包下有着 mybatis 所有的注解,让我们一文打尽! 1 @Mapper MyBatis映射器的标记接口 从mybatis3.4.0开始加入 ...

  5. androidentity什么用_Android ORM 框架:GreenDao 使用详解(进阶篇)

    前言 在 Android ORM 框架:GreenDao 使用详解(基础篇) 中,我们了解了 GreenDao 的基本使用,本文我们将深入讲解 GreenDao 的使用 . 一.复杂表结构 a, 使用 ...

  6. Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)

       本文原创, 转载请注明出处:http://blog.csdn.net/qinjuning 上篇文章<<Android中measure过程.WRAP_CONTENT详解以及xml布局文 ...

  7. Android 4.1-Jelly Bean新特性详解

    Android 4.1Jelly Bean新特性详解 发布会已经结束,Android新一代的4.1版本,代号Jelly Bean(果冻豆)的新系统已经正式问世,除了新架构.全新通知栏和搜索功能之外,实 ...

  8. 深入理解Android(一):Gradle详解

    http://www.infoq.com/cn/articles/android-in-depth-gradle/ http://www.infoq.com/cn/articles/android-i ...

  9. 《Android 网络开发与应用实战详解》——2.1节简析Android安装文件

    本节书摘来自异步社区<Android 网络开发与应用实战详解>一书中的第2章,第2.1节简析Android安装文件,作者 王东华,更多章节内容可以访问云栖社区"异步社区" ...

  10. ceph存储原理_赠书 | Linux 开源存储全栈详解——从Ceph到容器存储

    // 留言点赞赠书我有书,你有故事么?留言说出你的存储故事留言点赞前两名,免费送此书截止日期12.27号12.30号公布名单 // 内容简介 本书致力于帮助读者形成有关Linux开源存储世界的细致的拓 ...

最新文章

  1. 如何把html转换pdf,怎么把html转换成pdf
  2. 关于学习Python的一点学习总结(30->递归实例)
  3. R语言dplyr包mutate_all函数一次性处理所有的数据列的内容(使用统一的函数)实战
  4. Nginx Http认证 实现访问网站或目录密码认证保护
  5. MySQL 中的反斜杠 \\,真是太坑了!!
  6. Spring MVC-01循序渐进之Model 2和MVC
  7. Spring 为啥默认把 bean 设计成单例的?
  8. python 高级面试题_Python高阶面试题
  9. [VsCode] 开发所使用的VsCode的插件
  10. Java程序编译的几个方法(编辑器Notepad++)
  11. NFS方式挂载rootfs的设置方法
  12. 推荐一个wpfsliverlight的图表控件
  13. CVPR2022 | 利用域自适应思想,北大、字节跳动提出新型弱监督物体定位框架
  14. KVM安装(RHEL_6.4x64)
  15. 2018年最新桌面CPU性能排行天梯图(含至强处理器)
  16. java实现socket.io客户端功能
  17. 一文了解plc编程、电脑编程、手机APP编程、组态编程、云编程(上)
  18. ANN之乘积量化PQ
  19. 小红书种草笔记怎么写?种草笔记标题怎么写比较好
  20. jsp如何使用layerui

热门文章

  1. 操作系统原理课程 期末考试复习重点
  2. 最优化理论与方法(袁亚湘 孙文瑜)笔记(一)
  3. unity3d 破解
  4. 30款各大论坛的XP
  5. 微软服务器监控软件,Windows监控,Windows监控软件
  6. 关于安装MASM32后lib文件夹为空问题的解决
  7. 计算机网络的文件怎么删除,教你一招如何删除Win7电脑中的顽固文件
  8. 数据恢复技巧:U盘文件被隐藏怎么恢复?
  9. [索尼]笔记本电脑驱动程序安装顺序?
  10. PHP网站批量自动发外链工具源码