xUtils框架的介紹(二)

昨天對xUtils整體上做了一個簡單的介紹,今天咱們就代碼碼起,真刀實槍的也看看,看看如何快速便捷的把xUtils給集成到大家的項目中去。xUtils中有四大組件可以供我們使用,分別是ViewUtils、HttpUtils、BitmapUtils以及DbUtils。如果你沒能先讀一下我的上一篇文章,那麼請你移步過去先整體瞭解一下,再回過頭來看這篇文章,相信你回更有體會的。

下面依次開始介紹這些組件具體的使用。

一、ViewUtils  android中得ioc(控制反轉)框架,可以完全使用註解的方式來完成UI的綁定和事件綁定。簡單的說,ViewUtils的功能就是做這個的,但是可以說,就這麼個功能確是能極大的簡化我們的代碼。下面我們看下具體的代碼,順便對比下註解的方式綁定ID和findViewById之間的差別。

<span style="white-space:pre">	</span>@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);}


<p style="margin-top:0px; margin-bottom:0px; font-size:14px; font-family:Monaco; color:rgb(119,119,119)"></p>
</pre><pre name="code" class="java"><span style="white-space:pre">	</span>@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中事件綁定的區別。

<span style="white-space:pre">	</span>@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();
	}

<span style="white-space:pre">		</span>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();
			}
		});<pre name="code" class="java"><span style="white-space:pre">	</span>@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的各種構造器,可以很方便的創建出本地緩存路徑和緩存的大小,以及內存緩存的大小。

	<span style="white-space:pre">	</span>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。

碼字不易,

如果覺得對你有所幫助,歡迎大家訂閱我的微信公衆賬號——Android乾貨分享(ID:android_share)。下面是微信的二維碼,爲你提供及時高質的Android乾貨。技術交流QQ羣:318588906,歡迎大家加羣,共同探討下Android和Java技術,一起壯大我們的微信乾貨分享社區。

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章