這個知識很基礎也很簡單,僅以此作爲一個開始吧。
在窗口(activity)上面放3個控件,佈局隨意。在這個例子中,我們要實現的功能是給2個按鈕分別加上點擊事件,使之改變文本框的背景顏色。
下面是全部代碼:
//1
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//2 獲取控件
final TextView text = (TextView)this.findViewById(R.id.main_view1);
final Button btn1 = (Button)this.findViewById(R.id.main_btn1);
final Button btn2 = (Button)this.findViewById(R.id.main_btn2);
//添加事件
//3
btn1.setOnClickListener(new OnClickListener(){
//4
public void onClick(View v) {
//5
text.setBackgroundColor(Color.RED);
}
});
btn2.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
text.setBackgroundColor(Color.GREEN);
}
});
}
下面按照代碼中標記的數字進行逐一講解。
1:onCreate函數是activity創建後首先被調用的函數,選擇在這個函數裏給控件添加代碼應該是一種比較通用的做法,這樣當activity顯示在手機屏幕上的時候,控件就可以響應事件了。
onCreate函數式SDK中Activity類中定義的方法,在自己的activity中對父類的這個方法進行了重寫。
2:findViewById()通過控件id獲取到控件實例。一個應用中任何控件的id都是唯一的。findViewById()也是父類Activity中定義的一個方法。
需要注意final關鍵字,下面定義的內部類調用了這些實例,因爲語法的要求,所以需要在變量前加上final。
3:setOnClickListener()是按鈕控件的一個方法,用這個給按鈕添加點擊事件。函數需要傳入OnClickListener類的實例,此處使用java語言的一個基礎性特性-匿名內部類(如不太瞭解,請查閱相關資料)。
使用匿名內部類是定義控件事件的一種方法,還有別的方法可以使用,如果可能,將會在後續的文章中說明。
4:OnClickListener是個接口,new OnClickListener從語法上看好像實例化一個接口,這也是匿名內部類的一個特性。有一個前提是,需要實現接口裏的所有方法。
這裏實現的方法onClick()就是書寫事件處理代碼的地方。
5: 通過文本框(text)的setBackgroundColor給它設置1個背景顏色。Color.RED是預定義的顏色,對於簡單的顏色,可以直接調用。
按鈕2的事件代碼與按鈕1形式完全相同,它完成的功能是給文本框設置另一種不同的背景顏色。
事件結構就是這樣的,格式是固定的。在onClick()函數面可以編寫自己希望實現的功能,任意發揮自己的創造力,如果你有的話。