一、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);
}
如果每次都這樣findViewByid的話顯得代碼多餘複雜,看起來也不容易,而只通過XUtil的簡單註解,就可以完成這些
下面是XUtil的監聽事件,常用的一些監聽XUtil都已經封裝好了,比如Button,ListView,RadioGroup等等,只需要通過註解監聽他們就好了
@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();
}
二、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);