xUtils中有四大组件可以供我们使用,分别是ViewUtils、HttpUtils、BitmapUtils以及DbUtils。如果你没能先读一下我的上一篇文章,那么请你移步过去先整体了解一下,再回过头来看这篇文章,相信你回更有体会的。

下面依次开始介绍这些组件具体的使用。

一、ViewUtils  android中得ioc(控制反转)框架,可以完全使用注解的方式来完成UI的绑定和事件绑定。简单的说,ViewUtils的功能就是做这个的,但是可以说,就这么个功能确是能极大的简化我们的代码。下面我们看下具体的代码,顺便对比下注解的方式绑定ID和findViewById之间的差别。

[java] view
plain
copy

  1. @ViewInject(R.id.btn)
  2. private Button btn;
  3. @ViewInject(R.id.img)
  4. private ImageView img;
  5. @ViewInject(R.id.list)
  6. private ListView list;
  7. @Override
  8. protected void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.activity_second);
  11. ViewUtils.inject(this);}
[java] view
plain
copy

  1. @Override
  2. protected void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. setContentView(R.layout.activity_second);
  5. btn = (Button) findViewById(R.id.btn);
  6. img = (ImageView) findViewById(R.id.img);
  7. list = (ListView) findViewById(R.id.list);
  8. }

如果项目中得Activity中的控件相当多,那么想象一下代码中累积的那一大坨就真心受不了。通过xUtils的简单注解,就能轻松摆脱无尽坏味道的代码。

注意:在使用注解绑定控件的时候,一定记得在onCreate中调用ViewUtils.inject(this);

下面我们再对比下Android中事件绑定的区别。

[java] view
plain
copy

  1. @OnClick({ R.id.btn, R.id.img })
  2. public void clickMethod(View v) {
  3. Toast.makeText(SecondActivity.this, "you clicked button!",
  4. Toast.LENGTH_SHORT).show();
  5. }
  6. @OnItemClick(R.id.list)
  7. public void itemClick(AdapterView<?> parent, View view, int position,long id) {
  8. Toast.makeText(SecondActivity.this, "position--->" + position,
  9. Toast.LENGTH_SHORT).show();
  10. }
[java] view
plain
copy

  1. btn.setOnClickListener(this);
  2. list.setOnItemClickListener(new OnItemClickListener() {
  3. @Override
  4. public void onItemClick(AdapterView<?> parent, View view,
  5. int position, long id) {
  6. Toast.makeText(SecondActivity.this, "position--->" + position,
  7. Toast.LENGTH_SHORT).show();
  8. }
  9. });
  10. @Override
  11. public void onClick(View v) {
  12. switch (v.getId()) {
  13. case R.id.btn:
  14. Toast.makeText(SecondActivity.this, "you clicked button!",
  15. Toast.LENGTH_SHORT).show();
  16. break;
  17. default:
  18. break;
  19. }
  20. }

原本绑定Button的监听事件要么用丑陋的内部类,要么Activity实现OnClickListener,在复写的onClick方法中去根据id。而xUtils只要通过简单的一句注解就能实现监听事件的功能,而且可以实现多个控件共用一个监听方法。同时xUtils提供onClick、onItemClick、onLongClick等15种事件监听注解。

注意:在使用注解监听事件的时候,监听方法名是自定义的,但是一定要保证方法的访问修饰符为public,同时方法的参数要与Android原来的监听方法参数一致,不仅参数类型,而且要保证参数的顺序。

二、BitmapUtils  加载网络或本地bitmap的时候无需担心再遇到OOM的现象,管理bitmap的内存采用了LRU算法,同时也能避免列表滑动过程中发生图片错位等得现象。加载网络图片时,还可以配置运行线程的数量,缓存路径等。。。通过BitmapUtils的各种构造器,可以很方便的创建出本地缓存路径和缓存的大小,以及内存缓存的大小。

[java] view
plain
copy

  1. BitmapUtils utils = new BitmapUtils(this);
  2. BitmapDisplayConfig config = new BitmapDisplayConfig(this);
  3. config.setLoadingDrawable(getResources().getDrawable(R.drawable.loading));
  4. config.setLoadFailedDrawable(getResources().getDrawable(R.drawable.failed));
  5. config.setImageLoadCallBack(new ImageLoadCallBack() {
  6. @Override
  7. public void loadFailed(ImageView imageView, Drawable drawable) {
  8. }
  9. @Override
  10. public void loadCompleted(ImageView imageView, Drawable drawable,
  11. BitmapDisplayConfig config) {
  12. }
  13. });
  14. config.setBitmapMaxWidth(480);
  15. config.setBitmapMaxHeight(720);
  16. // utils.display(img, "http://img1.gtimg.com/news/pics/hv1/63/26/1451/94357968.jpg");
  17. utils.display(img, "http://img1.gtimg.com/news/pics/hv1/63/26/1451/94357968.jpg", config);

BitmapUtils在用来加载网络图片时,可以配置加载图片尺寸的大小,加载成功和失败的回调以及加载过程中图片的配置。同时也可以选择不配置。

[java] view
plain
copy

  1. //bitmapUtils.display(testImageView, "/sdcard/test.jpg"); //支持加载本地图片
  2. // 使用ListView等容器展示图片时可通过PauseOnScrollListener控制滑动和快速滑动过程中时候暂停加载图片
  3. listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true));
  4. listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true), customListener);

文章转载地址: http://blog.csdn.net/lanyeming2012/article/details/14043685

xUtils框架的介绍(二)的更多相关文章

  1. xUtils框架的介绍(一)

    微信账号申请终于通过了,这是我们第一次Android干货分享. 想来是第一次,要对得起“干货”二字. 今天我要为大家推荐的是一个Android基于快速开发的一个框架——xUtils, 它是在aFina ...

  2. Go语言Web框架gwk介绍 (二)

    HttpResult 凡是实现了HttpResult接口的对象,都可以作为gwk返回Web客户端的内容.HttpResult接口定义非常简单,只有一个方法: type HttpResult inter ...

  3. xUtils框架的介绍(三)

    接上回,继续介绍xUtils的最后两个模块:DbUtils和HttpUtils.首先先介绍第一个SQLite数据库操纵的简单ORM框架,只要能理解xUtils为我们提供的api,相信你也能熟练的把Db ...

  4. python nose测试框架全面介绍二

    二.基本使用 nosetest脚本的使用(在安装完nose之后) nosetests [options] [(optional) test files or directories] 我们可以使用配置 ...

  5. xUtils框架的介绍(四)

    今天介绍xUtils的最后一个模块--HttpUtils,拖了那么久,终于要结束了.另外,码字不易,如果大家有什么疑问和见解,欢迎大家留言讨论.HttpUtils是解决日常工作过程中繁杂的上传下载文件 ...

  6. Go语言Web框架gwk介绍2

    Go语言Web框架gwk介绍 (二) HttpResult 凡是实现了HttpResult接口的对象,都可以作为gwk返回Web客户端的内容.HttpResult接口定义非常简单,只有一个方法: ty ...

  7. 上门洗车APP --- Androidclient开发 之 网络框架封装介绍(二)

    上门洗车APP --- Androidclient开发 之 网络框架封装介绍(二) 前几篇博文中给大家介绍了一下APP中的基本业务及开发本项目使用的网络架构: 上门洗车APP --- Androidc ...

  8. xUTils框架的学习(二)

    这章讲的是框架的DbUtils模块的学习 三 xUtils框架的DButils模块 最开始接触这个框架就是从数据库模块开始的.当时的需求是需要记录用户的登录数据,保存在本地以便进行离线登录.首先想到的 ...

  9. xUtils框架

    我要为大家推荐的是一个Android基于快速开发的一个框架——xUtils,它是在aFinal基础上进行重构和扩展的框架,相比aFinal有很大的改善.同时,如果如果你的应用是基于网络的,那么只要处理 ...

随机推荐

  1. 2019阿里云开年Hi购季新用户分会场全攻略!

    2019阿里云云上Hi购季活动已经于2月25日正式开启,从已开放的活动页面来看,活动分为三个阶段: 2月25日-3月04日的活动报名阶段.3月04日-3月16日的新购满返+5折抢购阶段.3月16日-3 ...

  2. 洛谷 3398 仓鼠找sugar——树链剖分

    题目:https://www.luogu.org/problemnew/show/P3398 原来只要把值记录成第几次就行了. 别忘了while(top[a]!=top[b])之后还要走一步. #in ...

  3. 二分查找(BinSearch)的Javascript实现

    二分查找 解析:二分查找,也为折半查找.对于一个从小到大排列的有序数组,首先要找到一个中间值,通过与中间值比较,大的放又,小的放在左边.再在两边中寻找中间值,持续以上操作,直到找到所在位置为止. 1. ...

  4. MySQL与PostgreSQL比较 哪个数据库更好

    最后结论说的好,通常由团队成员的熟悉度来决定: PostgreSQL 的名字很少听到,最近试装发现不是很友好:官方文档写的对新手来说有点坑: 有数据库工作经验的直接看最后一句就可以. 如果打算为项目选 ...

  5. Linux 内存管理之mmap详解

    找了好多,最后发现下面这篇时讲的比较通俗易懂的. Linux内存管理之mmap详解-heavent2010-ChinaUnix博客 http://blog.chinaunix.net/uid-2666 ...

  6. html(),val(),text()的区别

    .html(),.text(),.val() 三种方法都是用来读取选定元素的内容: .html()是用来读取元素的HTML内容(包括其Html标签): .text()用来读取元素的纯文本内 容,包括其 ...

  7. IO流理解方式小结

    从业以来一直对IO不甚了解,每次看到都头疼不已,最近有时间小小的总结一下,下面以FileIO流为]; //文件输入流 FileInputStream in = new FileInputStream( ...

  8. Directx11教程(7) 画一个颜色立方体

    原文:Directx11教程(7) 画一个颜色立方体       前面教程我们通过D3D11画了一个三角形,本章我们将画一个颜色立方体,它的立体感更强.主要的变动是ModelClass类,在Model ...

  9. day40-Spring 01-上次课内容回顾

  10. 五.获得MYSQL数据库自动生成的主键

    测试脚本如下: 1 create table test1 2 ( 3 id int primary key auto_increment, 4 name varchar(20) 5 ); 测试代码: ...