xUtils AndroidStudio安装:

http://blog.csdn.net/iwanghang/article/details/51268890

sourse from:https://github.com/wyouflf/xUtils

xUtils简介

  • xUtils3 api变化较多, 已转至 https://github.com/wyouflf/xUtils3
  • xUtils 2.x对Android 6.0兼容不是很好, 请尽快升级至xUtils3.
  • xUtils 包含了很多实用的android工具。
  • xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响...
  • xUitls 最低兼容android 2.2 (api level 8)

目前xUtils主要有四大模块:

  • DbUtils模块:

    • android中的orm框架,一行代码就可以进行增删改查;
    • 支持事务,默认关闭;
    • 可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名);
    • 支持绑定外键,保存实体时外键关联实体自动保存或更新;
    • 自动加载外键关联实体,支持延时加载;
    • 支持链式表达查询,更直观的查询语义,参考下面的介绍或sample中的例子。
  • ViewUtils模块:

    • android中的ioc框架,完全注解方式就可以进行UI,资源和事件绑定;
    • 新的事件绑定方式,使用混淆工具混淆后仍可正常工作;
    • 目前支持常用的20种事件绑定,参见ViewCommonEventListener类和包com.lidroid.xutils.view.annotation.event。
  • HttpUtils模块:

    • 支持同步,异步方式的请求;
    • 支持大文件上传,上传大文件不会oom;
    • 支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT请求;
    • 下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件;
    • 返回文本内容的请求(默认只启用了GET请求)支持缓存,可设置默认过期时间和针对当前请求的过期时间。
  • BitmapUtils模块:

    • 加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象;
    • 支持加载网络图片和本地图片;
    • 内存管理使用lru算法,更好的管理bitmap内存;
    • 可配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等...

使用xUtils快速开发框架需要有以下权限:

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

混淆时注意事项:

  • 添加Android默认混淆配置${sdk.dir}/tools/proguard/proguard-android.txt
  • 不要混淆xUtils中的注解类型,添加混淆配置:-keep class * extends java.lang.annotation.Annotation { *; }
  • 对使用DbUtils模块持久化的实体类不要混淆,或者注解所有表和列名称@Table(name="xxx"),@Id(column="xxx"),@Column(column="xxx"),@Foreign(column="xxx",foreign="xxx");

DbUtils使用方法:

DbUtils db = DbUtils.create(this);
User user = new User(); //这里需要注意的是User对象必须有id属性,或者有通过@ID注解的属性
user.setEmail("wyouflf@qq.com");
user.setName("wyouflf");
db.save(user); // 使用saveBindingId保存实体时会为实体的id赋值...
// 查找
Parent entity = db.findById(Parent.class, parent.getId());
List<Parent> list = db.findAll(Parent.class);//通过类型查找Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","=","test"));// IS NULL
Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","=", null));
// IS NOT NULL
Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","!=", null));// WHERE id<54 AND (age>20 OR age<30) ORDER BY id LIMIT pageSize OFFSET pageOffset
List<Parent> list = db.findAll(Selector.from(Parent.class).where("id" ,"<", 54).and(WhereBuilder.b("age", ">", 20).or("age", " < ", 30)).orderBy("id").limit(pageSize).offset(pageSize * pageIndex));// op为"in"时,最后一个参数必须是数组或Iterable的实现类(例如List等)
Parent test = db.findFirst(Selector.from(Parent.class).where("id", "in", new int[]{1, 2, 3}));
// op为"between"时,最后一个参数必须是数组或Iterable的实现类(例如List等)
Parent test = db.findFirst(Selector.from(Parent.class).where("id", "between", new String[]{"1", "5"}));DbModel dbModel = db.findDbModelAll(Selector.from(Parent.class).select("name"));//select("name")只取出name列
List<DbModel> dbModels = db.findDbModelAll(Selector.from(Parent.class).groupBy("name").select("name", "count(name)"));
...List<DbModel> dbModels = db.findDbModelAll(sql); // 自定义sql查询
db.execNonQuery(sql) // 执行自定义sql
...

ViewUtils使用方法

  • 完全注解方式就可以进行UI绑定和事件绑定。
  • 无需findViewById和setClickListener等。
// xUtils的view注解要求必须提供id,以使代码混淆不受影响。
@ViewInject(R.id.textView)
TextView textView;//@ViewInject(vale=R.id.textView, parentId=R.id.parentView)
//TextView textView;@ResInject(id = R.string.label, type = ResType.String)
private String label;// 取消了之前使用方法名绑定事件的方式,使用id绑定不受混淆影响
// 支持绑定多个id @OnClick({R.id.id1, R.id.id2, R.id.id3})
// or @OnClick(value={R.id.id1, R.id.id2, R.id.id3}, parentId={R.id.pid1, R.id.pid2, R.id.pid3})
// 更多事件支持参见ViewCommonEventListener类和包com.lidroid.xutils.view.annotation.event。
@OnClick(R.id.test_button)
public void testButtonClick(View v) { // 方法签名必须和接口中的要求一致...
}
...
//在Activity中注入:
@Override
public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);ViewUtils.inject(this); //注入view和事件...textView.setText("some text...");...
}
//在Fragment中注入:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {View view = inflater.inflate(R.layout.bitmap_fragment, container, false); // 加载fragment布局ViewUtils.inject(this, view); //注入view和事件...
}
//在PreferenceFragment中注入:
public void onActivityCreated(Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);ViewUtils.inject(this, getPreferenceScreen()); //注入view和事件...
}
// 其他重载
// inject(View view);
// inject(Activity activity)
// inject(PreferenceActivity preferenceActivity)
// inject(Object handler, View view)
// inject(Object handler, Activity activity)
// inject(Object handler, PreferenceGroup preferenceGroup)
// inject(Object handler, PreferenceActivity preferenceActivity)

HttpUtils使用方法:

普通get方法

HttpUtils http = new HttpUtils();
http.send(HttpRequest.HttpMethod.GET,"http://www.lidroid.com",new RequestCallBack<String>(){@Overridepublic void onLoading(long total, long current, boolean isUploading) {testTextView.setText(current + "/" + total);}@Overridepublic void onSuccess(ResponseInfo<String> responseInfo) {textView.setText(responseInfo.result);}@Overridepublic void onStart() {}@Overridepublic void onFailure(HttpException error, String msg) {}
});

使用HttpUtils上传文件 或者 提交数据 到服务器(post方法)

RequestParams params = new RequestParams();
params.addHeader("name", "value");
params.addQueryStringParameter("name", "value");// 只包含字符串参数时默认使用BodyParamsEntity,
// 类似于UrlEncodedFormEntity("application/x-www-form-urlencoded")。
params.addBodyParameter("name", "value");// 加入文件参数后默认使用MultipartEntity("multipart/form-data"),
// 如需"multipart/related",xUtils中提供的MultipartEntity支持设置subType为"related"。
// 使用params.setBodyEntity(httpEntity)可设置更多类型的HttpEntity(如:
// MultipartEntity,BodyParamsEntity,FileUploadEntity,InputStreamUploadEntity,StringEntity)。
// 例如发送json参数:params.setBodyEntity(new StringEntity(jsonStr,charset));
params.addBodyParameter("file", new File("path"));
...HttpUtils http = new HttpUtils();
http.send(HttpRequest.HttpMethod.POST,"uploadUrl....",params,new RequestCallBack<String>() {@Overridepublic void onStart() {testTextView.setText("conn...");}@Overridepublic void onLoading(long total, long current, boolean isUploading) {if (isUploading) {testTextView.setText("upload: " + current + "/" + total);} else {testTextView.setText("reply: " + current + "/" + total);}}@Overridepublic void onSuccess(ResponseInfo<String> responseInfo) {testTextView.setText("reply: " + responseInfo.result);}@Overridepublic void onFailure(HttpException error, String msg) {testTextView.setText(error.getExceptionCode() + ":" + msg);}
});

使用HttpUtils下载文件:

  • 支持断点续传,随时停止下载任务,开始任务
HttpUtils http = new HttpUtils();
HttpHandler handler = http.download("http://apache.dataguru.cn/httpcomponents/httpclient/source/httpcomponents-client-4.2.5-src.zip","/sdcard/httpcomponents-client-4.2.5-src.zip",true, // 如果目标文件存在,接着未完成的部分继续下载。服务器不支持RANGE时将从新下载。true, // 如果从请求返回信息中获取到文件名,下载完成后自动重命名。new RequestCallBack<File>() {@Overridepublic void onStart() {testTextView.setText("conn...");}@Overridepublic void onLoading(long total, long current, boolean isUploading) {testTextView.setText(current + "/" + total);}@Overridepublic void onSuccess(ResponseInfo<File> responseInfo) {testTextView.setText("downloaded:" + responseInfo.result.getPath());}@Overridepublic void onFailure(HttpException error, String msg) {testTextView.setText(msg);}
});...
//调用cancel()方法停止下载
handler.cancel();
...

BitmapUtils 使用方法

BitmapUtils bitmapUtils = new BitmapUtils(this);// 加载网络图片
bitmapUtils.display(testImageView, "http://bbs.lidroid.com/static/image/common/logo.png");// 加载本地图片(路径以/开头, 绝对路径)
bitmapUtils.display(testImageView, "/sdcard/test.jpg");// 加载assets中的图片(路径以assets开头)
bitmapUtils.display(testImageView, "assets/img/wallpaper.jpg");// 使用ListView等容器展示图片时可通过PauseOnScrollListener控制滑动和快速滑动过程中时候暂停加载图片
listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true));
listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true, customListener));

其他(更多示例代码见sample文件夹中的代码

输出日志 LogUtils

// 自动添加TAG,格式: className.methodName(L:lineNumber)
// 可设置全局的LogUtils.allowD = false,LogUtils.allowI = false...,控制是否输出log。
// 自定义log输出LogUtils.customLogger = new xxxLogger();
LogUtils.d("wyouflf");

关于作者

  • Email: wyouflf@qq.com,wyouflf@gmail.com
  • 有任何建议或者使用中遇到问题都可以给我发邮件, 你也可以加入QQ群:330445659(已满), 275967695, 257323060,技术交流,idea分享_
G
M
T

檢測語言 阿尔巴尼亚语阿拉伯语阿塞拜疆语 爱尔兰语爱沙尼亚语巴斯克语 白俄罗斯语保加利亚语冰岛语 波兰语波斯尼亚语波斯语 布尔语(南非荷兰语)丹麦语德语 俄语法语菲律宾语 芬兰语高棉语格鲁吉亚语 古吉拉特语哈萨克语海地克里奥尔语 韩语豪萨语荷兰语 加利西亚语加泰罗尼亚语捷克语 卡纳达语克罗地亚语拉丁语 拉脱维亚语老挝语立陶宛语 罗马尼亚语马尔加什语马耳他语 马拉地语马拉雅拉姆语马来语 马其顿语毛利语蒙古语 孟加拉语缅甸语苗语 南非祖鲁语尼泊尔语挪威语 旁遮普语葡萄牙语齐切瓦语 日语瑞典语塞尔维亚语 塞索托语僧伽罗语世界语 斯洛伐克语斯洛文尼亚语斯瓦希里语 宿务语索马里语塔吉克语 泰卢固语泰米尔语泰语 土耳其语威尔士语乌尔都语 乌克兰语乌兹别克语希伯来语 希腊语西班牙语匈牙利语 亚美尼亚语伊博语意大利语 意第绪语印地语印尼巽他语 印尼语印尼爪哇语英语 约鲁巴语越南语中文简体 中文繁体 阿尔巴尼亚语 阿拉伯语阿塞拜疆语爱尔兰语 爱沙尼亚语巴斯克语白俄罗斯语 保加利亚语冰岛语波兰语 波斯尼亚语波斯语布尔语(南非荷兰语) 丹麦语德语俄语 法语菲律宾语芬兰语 高棉语格鲁吉亚语古吉拉特语 哈萨克语海地克里奥尔语韩语 豪萨语荷兰语加利西亚语 加泰罗尼亚语捷克语卡纳达语 克罗地亚语拉丁语拉脱维亚语 老挝语立陶宛语罗马尼亚语 马尔加什语马耳他语马拉地语 马拉雅拉姆语马来语马其顿语 毛利语蒙古语孟加拉语 缅甸语苗语南非祖鲁语 尼泊尔语挪威语旁遮普语 葡萄牙语齐切瓦语日语 瑞典语塞尔维亚语塞索托语 僧伽罗语世界语斯洛伐克语 斯洛文尼亚语斯瓦希里语宿务语 索马里语塔吉克语泰卢固语 泰米尔语泰语土耳其语 威尔士语乌尔都语乌克兰语 乌兹别克语希伯来语希腊语 西班牙语匈牙利语亚美尼亚语 伊博语意大利语意第绪语 印地语印尼巽他语印尼语 印尼爪哇语英语约鲁巴语 越南语中文简体中文繁体    
語言功能限100個字符
選項 :歷史 :幫助 : 反饋關閉

Android_GitHub_xUtils之DbUtils、ViewUtils、HttpUtils、BitmapUtils相关推荐

  1. 智慧北京02_初步ui框架_ 主界面_viewPager事件_xUtils_slidingMenu_网络缓存_数据传递...

    智慧北京02_初步ui框架_ 主界面_viewPager事件_xUtils_slidingMenu_网络缓存_数据传递 1.使用Fragment搭建ui框架 参考分析图 1.1,Fragment生命周 ...

  2. GitHub 上排名前 100 的 Android 开源库介绍

    转自:http://www.codeceo.com/article/github-top-100-android-libs.html 本项目主要对目前 GitHub 上排名前 100 的 Androi ...

  3. android开源框架总结

    排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者 ...

  4. GitHub 排名前 100 的安卓、iOS项目简介

    GitHub Android Libraries Top 100 简介 转自:http://www.devstore.cn/essay/essayInfo/6485.html 排名完全是根据 GitH ...

  5. 排名前100的Android开源库

    本项目主要对目前GitHub上排名前100的Android开源库进行简单的介绍,至于排名完全是根据GitHub搜索Java语言选择「BestMatch」得到的结果,然后过滤了跟Android不相关的项 ...

  6. GitHub Android Libraries Top 100 简介

    本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过 ...

  7. Android App整体架构设计

    避免代码臃肿混乱,最根本的是需要代码功底以及对于程序的整体把控和设计能力.除此之外,对于Android App,个人抛砖引玉,提点自己的思路.如果只是轻量级的App或者Web App,在App内做点简 ...

  8. GitHub-Android框架排行榜(100)

    项目名称 项目简介 1. react-native 这个是 Facebook 在 React.js Conf 2015 大会上推出的基于 JavaScript 的开源框架 React Native, ...

  9. Github Android流行框架Top100

    GitHub Android Libraries Top 100 简介 本文原文链接地址https://github.com/Freelander/Android_Data/blob/master/A ...

  10. Android 第三方库前100

    本文转自:https://github.com/Freelander/Android_Data/blob/master/Android-Librarys-Top-100.md 本项目主要对目前 Git ...

最新文章

  1. 如何使用jQuery获取焦点元素?
  2. 【CF868F】Yet Another Minimization Problem (决策单调性优化dp+分治)
  3. 【LeetCode从零单排】No118 Pascal#39;s Triangle
  4. 使用Forms验证存储用户自定义信息
  5. Android 动画 Animator 家族
  6. [Python] L1-031. 到底是不是太胖了-PAT团体程序设计天梯赛GPLT
  7. localStorage、sessionStorage详解,以及storage事件使用
  8. Android sdcard读写权限问题之中的一个
  9. 博文视点Open Party ——漏洞分析
  10. Centos 6让SVN提交文件自动更新到nginx的WEB目录
  11. 浏览计算机已查找驱动程序软件,欢迎访问海南省数字证书认证中心
  12. Tomcat 8.0下载 官网
  13. c programe language learn notes 2
  14. 自动驾驶各大传感器介绍-硬件篇
  15. windows照片查看器没了_Windows电脑中实用性特别强的9款软件,建议大家低调收藏!...
  16. win10误删的注册表能还原吗_win10恢复系统注册表,win10删除注册表怎么还原
  17. 利用线性回归进行销售预测
  18. 14.运算符(operator)
  19. SQL必知必会第4版读书笔记
  20. 人工智能在自动驾驶深度学习中的应用

热门文章

  1. [KM 树同构Hash DP] BZOJ 3197 [Sdoi2013]assassin
  2. 微信小程序自定义状态栏组件,提取自(colorui)
  3. linux中package什么文件夹,PACKAGE 文件扩展名: 它是什么以及如何打开它?
  4. 你想要的宏基因组-微生物组知识全在这(19国庆特别篇)
  5. 止增笑耳的星际迷航前传
  6. ubuntu20.04安装并运行ORB_SLAM3(一路顺风版)
  7. 介绍java 8 的 Period 和 Duration 类
  8. Qt 一个简单的基于mplayer的视频播放器
  9. ThreadPoolExecutor中的submit()方法详细讲解
  10. 机器学习之线性回归 Linear Regression(二)Python实现