xUtils框架的介绍(二)

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.       
  4.     @ViewInject(R.id.img)  
  5.     private ImageView img;  
  6.       
  7.     @ViewInject(R.id.list)  
  8.     private ListView list;  
  9.       
  10.     @Override  
  11.     protected void onCreate(Bundle savedInstanceState) {  
  12.         super.onCreate(savedInstanceState);  
  13.         setContentView(R.layout.activity_second);  
  14.         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.           
  6.         btn = (Button) findViewById(R.id.btn);  
  7.         img = (ImageView) findViewById(R.id.img);  
  8.         list = (ListView) findViewById(R.id.list);  
  9.           
  10.     }  

如果项目中得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.   
  7.     @OnItemClick(R.id.list)  
  8.     public void itemClick(AdapterView<?> parent, View view, int position,long id) {  
  9.         Toast.makeText(SecondActivity.this, "position--->" + position,  
  10.                 Toast.LENGTH_SHORT).show();  
  11.     }  

[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.   
  3. // 使用ListView等容器展示图片时可通过PauseOnScrollListener控制滑动和快速滑动过程中时候暂停加载图片  
  4. listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true));  
  5. listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true), customListener);  

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

时间: 2024-11-08 22:22:25

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

xUtils框架的介绍(一)

今天我要为大家推荐的是一个Android基于快速开发的一个框架--xUtils,它是在aFinal基础上进行重构和扩展的框架,相比aFinal有很大的改善.同时,如果如果你的应用是基于网络的,那么只要处理得当,它会让你彻底的摆脱各种工具类和重复代码的困扰.好的,废话不多说,程序猿们还是代码说起.     xUtils 包含了很多实用的android工具.xUtils 源于Afinal框架,对Afinal进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持,拥有更加灵活的O

xUtils框架的介绍(三)

接上回,继续介绍xUtils的最后两个模块:DbUtils和HttpUtils.首先先介绍第一个SQLite数据库操纵的简单ORM框架,只要能理解xUtils为我们提供的api,相信你也能熟练的把DbUtils用到项目中去. 操纵数据库的工具类,无论多牛X,总离不开最根本的CRUD,即创建,查询,更新和删除.下面从这四个角度依次介绍xUtils是如何简便持久化数据的.大家都知道,在Android里面如果要存储一个对象,我们需要创建一个SQLiteOpenHelper,然后还得创建一张对应对象各个

xUtils框架的介绍(四)

今天介绍xUtils的最后一个模块--HttpUtils,拖了那么久,终于要结束了.另外,码字不易,如果大家有什么疑问和见解,欢迎大家留言讨论.HttpUtils是解决日常工作过程中繁杂的上传下载文件以及各种Get和post请求的必备工具类,通过这个类,开源非常方便关注接口的业务,不必再再写那么冗长的代码.下面全文都围绕着四个中心点去依次展开,分别是:HttpGet请求,HttpPost请求,下载文件和上传文件. HttpGet请求.相信从事Android网络应用的开发的同学对这个一定不会陌生,

Android Xutils框架使用问题及解决办法

    刚刚写了篇博客,提了下在使用XUtils时遇到的一个问题Android Xutils框架HttpUtil Get请求缓存问题 ,既然已经提起来这个问题,那我想了下,就把之前使用Xutils时遇到的几个小问题整理一下. 一. HttpUtil Get请求缓存问题       关于Xtuls框架的Http模块的get请求方法,会有缓存问题--即进行get请求时,在缓存规定的时间内,如果发送同样的请求url,则不会再次请服务器发送请求,而是直接返回上次请求的结果. 之前写了一篇博客已经介绍的很

Android Xutils框架HttpUtil Get请求缓存问题

  话说,今天和服务器开发人员小小的逗逼了一下,为啥呢?   话说今天有个"收藏产品"的请求接口,是get request的哦,我客户端写好接口后,点击"收藏按钮",返回"收藏成功",我又点了一下,尼玛居然还是"收藏成功",我再点一下,这下对了,返回给我"取消收藏成功",好吧,我又点了一下,彻底郁闷了,居然又是"取消收藏成功",这不是逗我的么?   于是我让服务器人员检查他的接口,是不是

Android中的xutils框架在访问服务器时如何携带json数据

问题描述 Android中的xutils框架在访问服务器时如何携带json数据 xutils框架的httputils在访问服务器时如何像HttpURLConnection一样携带json数据 HttpURLConnection携带数据的案例,使用put请求: URL url; HttpURLConnection connection = null; int flag = 0; try { String userIpAddress = "http://" + "124.207.

XMOVE3.0手持终端——软件介绍(二):在2KB内存的单片机上实现的彩屏GUI控件库

一. 综述 嵌入式系统发展日新月异,安卓和ios已然战胜了当年雄霸天下的塞班,界面是我们特别看重的因素之一.不过你考虑过自己做一套系统,写一个界面库么?在单片机上自制系统,可以很好的锻炼编程能力和架构设计能力. 这些界面库都是在底层画点画线的驱动程序上实现的,基于我的XMOVE动作感应系统.基本具有硬件无关性.支持彩屏320*240的分辨率,由于考虑不同分辨率的开发过分复杂(想想看你需要计算每个点布局在哪个位置,这对安卓等系统都是大问题),因此我并没有太过完善的考虑过其他分辨率. 我已经写过一篇

[置顶].NET平台开源项目速览(13)机器学习组件Accord.NET框架功能介绍

    Accord.NET Framework是在AForge.NET项目的基础上封装和进一步开发而来.因为AForge.NET更注重与一些底层和广度,而Accord.NET Framework更注重与机器学习算法以及提供计算机视频.音频.信号处理以及统计应用相关的解决方案.该项目使用C#语言编写,项目主页:http://accord-framework.net/     说明:该文章只是一个基本介绍,主要内容是翻译的官方文档和介绍,部分英文表述个人能力有限,不太熟悉,所以直接照搬原文,有比较

Lucene.Net 2.3.1开发介绍 —— 二、分词(四)

原文:Lucene.Net 2.3.1开发介绍 -- 二.分词(四) 2.1.2 可以使用的内置分词   简单的分词方式并不能满足需求.前文说过Lucene.Net内置分词中StandardAnalyzer分词还算比较实用(见1.1.2小节).StandardAnalyzer为什么能满足我们的部分需求,而它又有哪些不足呢?看分词的好坏还是要从效果说起.简单的说,在中英文混合的情况下,StandardAnalyzer会把英文按空格拆,而中文则按单字拆.因为中文是按单字拆,所以对分词的准确性起到了干