Android-xUtils架構介紹(二)

來源:互聯網
上載者:User

標籤:

昨天對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

Android-xUtils架構介紹(二)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.