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

    昨天对xUtils整体上做了一个简单的介绍,今天咱们就代码码起,真刀实枪的也看看,看看如何快速便捷的把xUtils给集成到大家的项目中去。xUtils中有四大组件可以供我们使用,分别是ViewUtils、HttpUtils、BitmapUtils以及DbUtils。如果你没能先读一下我的上一篇文章,那么请你移步过去先整体了解一下,再回过头来看这篇文章,相信你回更有体会的。

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

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

    @ViewInject(R.id.btn)
        private Button btn;
        
        @ViewInject(R.id.img)
        private ImageView img;
        
        @ViewInject(R.id.list)
        private ListView list;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_second);
            ViewUtils.inject(this);}
    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_second);
            
            btn = (Button) findViewById(R.id.btn);
            img = (ImageView) findViewById(R.id.img);
            list = (ListView) findViewById(R.id.list);
            
        }

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

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

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

    @OnClick({ R.id.btn, R.id.img })
        public void clickMethod(View v) {
            Toast.makeText(SecondActivity.this, "you clicked button!",
                    Toast.LENGTH_SHORT).show();
        }
    
        @OnItemClick(R.id.list)
        public void itemClick(AdapterView<?> parent, View view, int position,long id) {
            Toast.makeText(SecondActivity.this, "position--->" + position,
                    Toast.LENGTH_SHORT).show();
        }
    btn.setOnClickListener(this);
            list.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                    Toast.makeText(SecondActivity.this, "position--->" + position,
                            Toast.LENGTH_SHORT).show();
                }
            });
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
            case R.id.btn:
                Toast.makeText(SecondActivity.this, "you clicked button!",
                        Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
            }
        }

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

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

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

    BitmapUtils utils = new BitmapUtils(this);
            BitmapDisplayConfig config = new BitmapDisplayConfig(this);
            config.setLoadingDrawable(getResources().getDrawable(R.drawable.loading));
            config.setLoadFailedDrawable(getResources().getDrawable(R.drawable.failed));
            config.setImageLoadCallBack(new ImageLoadCallBack() {
                @Override
                public void loadFailed(ImageView imageView, Drawable drawable) {
                }
                @Override
                public void loadCompleted(ImageView imageView, Drawable drawable,
                        BitmapDisplayConfig config) {
                }
            });
            config.setBitmapMaxWidth(480);
            config.setBitmapMaxHeight(720);
    //        utils.display(img, "http://img1.gtimg.com/news/pics/hv1/63/26/1451/94357968.jpg");
            utils.display(img, "http://img1.gtimg.com/news/pics/hv1/63/26/1451/94357968.jpg", config);

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

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

    剩下的两个组件:DbUtils和HttpUtils

    转自:http://my.oschina.net/jack1900/blog/173526

  • 相关阅读:
    7月的尾巴,你是XXX
    戏说Android view 工作流程《下》
    “燕子”
    Android开机动画bootanimation.zip
    戏说Android view 工作流程《上》
    ViewController里已连接的IBOutlet为什么会是nil
    My first App "Encrypt Wheel" is Ready to Download!
    iOS开发中角色Role所产生的悲剧(未完)
    UIScrollView实现不全屏分页的小技巧
    Apple misunderstood my app,now my app status changed to “In Review”
  • 原文地址:https://www.cnblogs.com/liyiran/p/4277823.html
Copyright © 2011-2022 走看看