zoukankan      html  css  js  c++  java
  • xUtils框架的介绍(二)

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

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

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

    [java] view plaincopy
    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 plaincopy
    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 plaincopy
    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 plaincopy
    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 plaincopy
    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 plaincopy
    1. //bitmapUtils.display(testImageView, "/sdcard/test.jpg"); //支持加载本地图片  
    2.   
    3. // 使用ListView等容器展示图片时可通过PauseOnScrollListener控制滑动和快速滑动过程中时候暂停加载图片  
    4. listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, falsetrue));  
    5. listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, falsetrue), customListener);  


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

  • 相关阅读:
    Lombok Pojo默认初始值问题
    spring boot打包以及centos下部署
    Spring事件监听ApplicationListener源码流程分析
    synchronized是什么,用法及原理
    Spring动态切换数据源及事务
    linux环境中关闭tomcat,通过shutdown.sh无法彻底关闭--线程池
    LVS之DR模式
    LVS之ipvsadm命令
    LVS之NAT模式
    tcpdump抓包命令
  • 原文地址:https://www.cnblogs.com/hehe520/p/6329995.html
Copyright © 2011-2022 走看看