.Net程序員安卓學習之路5:使用xutils注入View和事件以及圖片的顯示


xUtils注入和圖片顯示

一、xUtils注入

引用官方介紹:

ViewUtils模塊:
 
•android中的ioc框架,完全注解方式就可以進行UI,資源和事件綁定;
•新的事件綁定方式,使用混淆工具混淆后仍可正常工作;
•目前支持常用的20種事件綁定,參見ViewCommonEventListener類和包com.lidroid.xutils.view.annotation.event

      之前我們寫事件比如Btn的Click事件一般采用硬編碼或者Linstener的方式來實現,從界面某個元素取值或者賦值必須首先使用findcontrol來找到他較為麻煩且難以維護,而這些使用xUtils的注解功能就能很簡潔的完成,比如下例我們實現點擊Btn給文本框賦值操作:

wpsA9F6.tmp

點擊Btn后:

wpsAA07.tmp

要實現xUtils注入首先得在onCreate中加入:

ViewUtils.inject(this); //注入view和事件

之后定義控件如下:

@ViewInject(R.id.lbl_info)

private TextView textView;

這樣就相當於找到界面ID為lbl_infoTextView ,在接下來的代碼中隨意使用:

textView.setText("Clicked Btn");

能注入View同樣也能注入事件,如我們要實現Btn的點擊事件只需如下編碼即可:

@OnClick(R.id.btn_test)
public void btn_testClick(View v)

{ 
// 方法簽名必須和接口中的要求一致 .... }

而前台並不需要定義它的事件:

<Button
android:id="@+id/btn_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Show Me" />

結合起來就是:

@OnClick(R.id.btn_test)
public void btn_testClick(View v)
    { 
        // 方法簽名必須和接口中的要求一致
        textView.setText("Clicked Btn");

    }

這種方式必須保證控件有ID。

二、使用xUtils完成圖片的顯示

◦ BitmapUtils模塊:
 
•加載bitmap的時候無需考慮bitmap加載過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象;
•支持加載網絡圖片和本地圖片;
•內存管理使用lru算法,更好的管理bitmap內存;
•可配置線程加載線程數量,緩存大小,緩存路徑,加載顯示動畫等...

1.網絡圖片:

需要增加網絡或者SD卡訪問權限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

拿博客園Logo為例,訪問的代碼如下:

BitmapUtils bitmapUtils = new BitmapUtils(this);
bitmapUtils.display(imgItem, "http://42.121.254.191/images/logo_small.gif");

思路是先在界面聲明圖片控件:

<ImageView
android:id="@+id/img_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>

再找到這個控件:

@ViewInject(R.id.img_item)
private ImageView imgItem;

將開始訪問網絡圖片的那句代碼放入按鈕點擊事件下,運行即可:

wpsAA08.tmp

2. 本地圖片

在本地assets中放入一個圖片待顯示。

只需一句代碼(剩下的和上例同):

bitmapUtils.display(imgItem, "assets/qq.jpg");

wpsAA18.tmp


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM