说实话,对于xUtils,是我最近才用到的开发框架(也是刚接触),对于其功能不得不说,简化了很多的开发步骤,可以说是非常好的开发工具,但是其最近更新到3.0也没有解决加载自定义ImageView报错的问题。

xUtils简介

xUtils 包含了很多实用的android工具。

xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响...

xUitls 最低兼容android 2.2 (api level 8)

我总是喜欢用一些最新的东西,xUtils 3.0才刚更新,是一次比较大的重构,对于百度到的使用规则,基本都是3.0以前的,使得用3.0的开发者需要求解用法的时候,遇到许多阻碍,故此在这里简单介绍xUtils 3.0的使用规则。关于怎么导入功能,其实并不是本文的内容,不过在此文最后一节简单讲解了一下导入的方式。

1.xUtils中的IOC框架

使用xUtils的第一步就是必须创建自己的Application类,代码如下:

public class LYJApplication extends Application {

@Override

public void onCreate() {

super.onCreate();

x.Ext.init(this);//Xutils初始化

}

}

在AndroidManifest.xml的application标签中添加如下代码:

android:name=".LYJApplication"

这样初始化就算完成了。

使用IOC框架的代码如下:

import org.xutils.view.annotation.ContentView;

import org.xutils.view.annotation.Event;

import org.xutils.view.annotation.ViewInject;

import org.xutils.x;

@ContentView(value = R.layout.activity_main)

public class MainActivity extends AppCompatActivity {

@ViewInject(value = R.id.mybut)

private Button mybut;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

x.view().inject(this);

}

@Event(value = R.id.mybut,type = View.OnClickListener.class)

private void onButtonClick(View v){

switch (v.getId()){

case R.id.mybut:

Toast.makeText(this,"你好我是Xutils的IOC功能",Toast.LENGTH_SHORT).show();

break;

}

}

}

需要解释的以下几点:

其一:使用IOC必须全部为私有,不然无效,这里就做演示了,不信你可以把用到IOC框架的注解的成员变量及方法全部换成public ,那么全部会无效,当然除了ContentView例外。

其二,所有用到IOC成员变量,使用的时候,必须在x.view().inject(this)后,如果写在前面,那么程序会崩溃。

2.xUtils加载图片功能

现在我们需要设置两个权限,如下:

接下来就是加载网络图片到imageView中:

x.image().bind(image,"http://pic.baike.soso.com/p/20090711/20090711101754-314944703.jpg");

也可以设置参数:

ImageOptions imageOptions = new ImageOptions.Builder()

.setSize(DensityUtil.dip2px(120), DensityUtil.dip2px(120))//图片大小

.setRadius(DensityUtil.dip2px(5))//ImageView圆角半径

.setCrop(true)// 如果ImageView的大小不是定义为wrap_content, 不要crop.

.setImageScaleType(ImageView.ScaleType.CENTER_CROP)

.setLoadingDrawableId(R.mipmap.ic_launcher)//加载中默认显示图片

.setFailureDrawableId(R.mipmap.ic_launcher)//加载失败后默认显示图片

.build();

x.image().bind(image, "http://pic.baike.soso.com/p/20090711/20090711101754-314944703.jpg",imageOptions);

你也可以将第2个参数设置为图片文件路径,那么将从SD卡中加载图片。

3.xUtils操作数据库

我们都知道,一个App中操作数据库的地方有很多,就像是否登录一样,有些地方必须登录后才能操作,那么肯定是全局变量,所以,必须将数据库的初始化放在Application,且必须提供获取数据库的方法,使得在应用程序的任何地方都可以直接获取数据库,并操作数据库,不然重复的获取与释放只能增加内存无谓的消耗。

初始化数据库:

public class LYJApplication extends Application {

private DbManager.DaoConfig daoConfig;

public DbManager.DaoConfig getDaoConfig() {

return daoConfig;

}

@Override

public void onCreate() {

super.onCreate();

x.Ext.init(this);//Xutils初始化

daoConfig = new DbManager.DaoConfig()

.setDbName("lyj_db")//创建数据库的名称

.setDbVersion(1)//数据库版本号

.setDbUpgradeListener(new DbManager.DbUpgradeListener() {

@Override

public void onUpgrade(DbManager db, int oldVersion, int newVersion) {

// TODO: ...

// db.addColumn(...);

// db.dropTable(...);

// ...

}

});//数据库更新操作

}

}

上面的注释明了,有必要说明的一点是setDbDir(new File("/sdcard")),可以将数据库存储在你想存储的地方,如果不设置,那么数据库默认存储在/data/data/你的应用程序/database/xxx.db下。这里我们就默认放在应用程序下。

我们首先创建一个实体类,如下:

@Table(name="lyj_person")

public class LYJPerson {

@Column(name = "id", isId = true)

private int id;

@Column(name = "name")

private String name;

@Column(name = "age")

private String age;

public String getAge() {

return age;

}

public void setAge(String age) {

this.age = 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;

}

}

通过实体类可以直接操作数据库。

我们在Application中加入如下代码,向数据库添加数据:

DbManager db = x.getDb(daoConfig);

LYJPerson person1=new LYJPerson();

person1.setName("liyuanjinglyj");

person1.setAge("23");

LYJPerson person2=new LYJPerson();

person2.setName("xutilsdemo");

person2.setAge("56");

try {

db.save(person1);

db.save(person2);

} catch (DbException e) {

e.printStackTrace();

}

在Activity中操作获取数据库数据的代码如下:

DbManager db = x.getDb(((LYJApplication)getApplicationContext()).getDaoConfig());

try {

List lyjPersons=db.selector(LYJPerson.class).findAll();

for (int i=0;i

Log.i("liyuanjinglyj","LYJPerson"+i+".name="+lyjPersons.get(i).getName());

Log.i("liyuanjinglyj","LYJPerson"+i+".name="+lyjPersons.get(i).getAge());

}

} catch (DbException e) {

e.printStackTrace();

}

那么肯定会得到如下结果:

4.xUtils的网络请求

Android规定UI线程是不能涉及网络任务的,所以,这里主要简单介绍Xutils的异步网络请求,同步的自行探究。

使用格式如下:

RequestParams params = new RequestParams("http://blog.csdn.net/mobile/experts.html");

x.http().get(params, new Callback.CommonCallback() {

@Override

public void onSuccess(String result) {

Document doc = Jsoup.parse(result);

Element div = doc.select("div.list_3").get(0);

Elements imgs = div.getElementsByTag("img");

for (int i = 0; i < imgs.size(); i++) {

Element img = imgs.get(i);

Log.i("liyuanjinglyj",img.attr("alt"));

}

}

@Override

public void onError(Throwable ex, boolean isOnCallback) {

}

@Override

public void onCancelled(Callback.CancelledException cex) {

}

@Override

public void onFinished() {

}

});

这里获取的是CSDN移动博客专家的HTML页面信息,看看下面的日志,就知道Xutils网络功能还是很强大的。

本文最后附带了一下粗略模仿CSDN APP的源码,有意者可以下载看看,里面用到另一个开发框架,我用来专门处理图片的(afinal)。都说xUtils是afinal的进化版,不过在图片方面,我们觉得xUtils还有点不足。

5..导入xUtils工程到Android Studio

下载地址如下:

㈠将下载的工程复制到Project目录下:

㈡添加到settings.gradle文件:

include ':app',':xutils'

㈢编译到工程中

dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

compile 'com.android.support:appcompat-v7:23.0.1'

compile project(':xutils')

}

㈣将xutils文件夹下的build.gradle中的版本与最低版本调整到与创建工程一致

compileSdkVersion 23

buildToolsVersion "23.0.1"

defaultConfig {

minSdkVersion 15

targetSdkVersion 23

versionCode 20151224

versionName version

}

㈤添加如下代码到build.gradle(Project:XutilsDemo)中

dependencies {

classpath 'com.android.tools.build:gradle:1.3.0'

classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'

classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'

// NOTE: Do not place your application dependencies here; they belong

// in the individual module build.gradle files

}

其中红色标记为添加的代码。

点击Sync now就可以使用xUtils了。

相关阅读:

以上所述是小编给大家介绍的Android xUtils更新到3.0后的基本使用规则详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

android xutils 教程,Android xUtils更新到3.0后的基本使用规则详解相关推荐

  1. xutils找id空指针_xUtils更新到3.0后的基本使用规则

    说实话,对于xUtils,是我最近才用到的开发框架(也是刚接触),对于其功能不得不说,简化了很多的开发步骤,可以说是非常好的开发工具,但是其最近更新到3.0也没有解决加载自定义ImageView报错的 ...

  2. Android 相机教程,Android 相机教程

    Android相机教程 相机主要用于捕获图片和视频.我们可以通过使用相机API的方法来控制相机. Android通过以下两种方式提供了在相机上工作的功能: 通过相机意图 通过相机API 了解相机意图和 ...

  3. Android SDK 离线下载安装更新至4.0.3(目前最新) (转)

    原文地址为: Android SDK 离线下载安装更新至4.0.3(目前最新) (转) 转自:http://hi.baidu.com/xiaoyun1227/item/e0ca2ccc06cf6d35 ...

  4. Android精通教程-Android入门简介

    前言 大家好,我是 Vic,今天给大家带来Android精通教程-Android入门简介的概述,希望你们喜欢 每日一句 If life were predictable it would cease ...

  5. Android自动化测试环境部署及adb sdkmanager avdmanager Monitor DDMS工具使用及命令详解

    环境部署及工具使用 系列文章 前言 环境部署 硬件环境 软件环境 ADB工具 adb组成 adb命令 android命令 sdkmanager 命令 avdmanager命令 管理模拟器 monito ...

  6. Android AR开发实践之七:OpenGLES相机预览背景绘制源码详解

    Android AR开发实践之七:OpenGLES相机预览背景绘制源码详解 目录 Android AR开发实践之七:OpenGLES相机预览背景绘制源码详解 一.OpenGL ES渲染管线 1.基本处 ...

  7. android-短信验证功能,Android实现获取短信验证码的功能以及自定义GUI短信验证详解...

    <Android实现获取短信验证码的功能以及自定义GUI短信验证详解>由会员分享,可在线阅读,更多相关<Android实现获取短信验证码的功能以及自定义GUI短信验证详解(8页珍藏版 ...

  8. android PorterDuffXfermode ,PorterDuff.Mode 使用 以及Porter-Duff规则详解

    android PorterDuffXfermode ,PorterDuff.Mode 使用 以及Porter-Duff规则详解 1.下面的Xfermode子类可以改变这种行为: AvoidXferm ...

  9. QT5.10.0安装教程图文教程以及安装成功QT5.10.0后环境配置图文步骤

    引用:https://www.cnblogs.com/chenmingjun/p/8392713.html QT5.10.0安装教程图文教程以及安装成功QT5.10.0后环境配置图文教程 文章目录 Q ...

  10. PyKivy入门教程:Kivy Python库的介绍、安装及使用方法详解

    PyKivy入门教程:Kivy Python库的介绍.安装及使用方法详解 Kivy是一个跨平台的Python GUI工具包,可以用于开发能够在多种设备和操作系统上运行的应用程序.Kivy支持触摸输入. ...

最新文章

  1. 活动排序工具之双代号网络(AOA)与单代号网络(AON)[cont.]
  2. idea 使用 git 教程
  3. java频繁的new对象 优化方案
  4. shell 常用命令语句
  5. 实战SSM_O2O商铺_37【商品】商品列表之View层的实现
  6. 将文件名发送到服务器,将Paperclip路径文件名从服务器更新到s3(Updating Paperclip path file names from on server to s3)...
  7. Interview:算法岗位面试—11.17下午上海某网**软件公司(上市)技术面之比赛考察、目标检测算法、视频分析算法考点
  8. .net 后台读取pdf的值
  9. 介绍这个库:C# Blazor中显示Markdown文件
  10. Python和Java结合的项目实战_[项目实战] Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 [...
  11. html转机器语言,【转】HTML5的语音输入 渐进使用HTML5语言识别, so easy! – 文艺里的小清新...
  12. thinkphp开启子域名无法正常访问_解决TP6报错“当前访问路由未定义或不匹配”...
  13. python2.7初学(〇)
  14. 磁盘已满,如何从 Mac 中删除大文件?
  15. 设置火狐 账号服务器,Firefox 账号问答
  16. 微信小程序之地图功能
  17. OpenSSL Cipher 加密解密 Ruby on Rails
  18. selenium定位到元素后获取其属性_selenium定位tr及td,并获取其文本及属性
  19. C++编程第一课《编程是一门技术——认识C++》
  20. Linux时间与系统时间相差8小时的解决办法

热门文章

  1. 计算机制图视频教程,机械制图视频教程
  2. 草图大师插件常用插件_20个草图插件可增强您的生产力
  3. 线性规划问题的目标函数灵敏度分析
  4. html怎样制作表格模板,Word怎么做入职表格模板
  5. 电脑鼠标右键菜单太多了怎么办?Windows右键菜单设置删除方法介绍
  6. 如何破解无线网密码进行上网
  7. 思科为计算机配置ip命令,思科路由器配置IP方法
  8. C#开发ActiveX控件
  9. win10如何深度清理c盘【系统天地】
  10. 简单个人网页设计作业 静态HTML旅行主题网页作业 DW个人网站模板下载 大学生简单个人网页作品代码 个人网页制作 学生个人网页Dreamweaver设计作业