1. 程式人生 > >自學Android歷程->Android應用的是事件處理機制

自學Android歷程->Android應用的是事件處理機制

1、事件處理的概念和處理方式:      為使用者動作提供響應的機制就叫做事件處理,Android有兩種事件處理機制:基於回撥的事件處理和基於監聽的事件處理; 基於監聽的事件處理: 1、監聽的處理模型:      Event Source(事件源):事件發生的場所嗎,通常指各個元件,例如按鈕、視窗選單等;      Event(事件)                     :事件封裝了介面元件上發生的特定的事情,通常就是一次使用者操作,如要獲取發生的事件所有相關資訊,可以通過Event物件來獲取;      Event Listener(監聽器)   :負責監聽事件源所發生的事情,並對各種事件做出響應動作; 2、基於監聽的事件處理流程和編碼步驟:
            -->獲取普通介面元件(事件源),也就是被監聽的物件;      -->實現事件監聽器類,該監聽器是一個特殊的Java類,必須實現一個XxxxListener介面;      -->呼叫事件源的serXxxListener方法將事件監聽器物件註冊給普通元件(事件源);      當事件源上發生指定事件後,Adnroid會觸發事件監聽器,由事件監聽器呼叫響應的方法(事件處理器)來處理事件; public class MainActivity extends Activity
{
    @Override
public void OnCreate(Bundle savedInstanceState)
    {
        super
.onCreate(savedInstanceState);
setContentView(R.attr.class);
//        獲取應用程式中的bn按鈕
Button bn = (Button) findViewById(R.id.bn);
//        找到按鈕後,為這個按鈕繫結一個事件監聽器
bn.setOnClickListener(new MyClickListener());
}
//    定義一個單擊事件的監聽器
class MyClickListener implements View.OnClickListener
    {
//            實現監聽器類必須實現的方法,作為對於按鈕單擊動作的響應
@Override
public void OnClick(View v)
        {
            EditText txt = (EditText)findViewById(R.id.txt);
txt.setText("Bn button is clicked");
}
    } } 3、基於監聽的事件處理的規則:      -->事件源      :就是程式中定義的bn按鈕,應用程式中任何元件都可以成為事件源;      -->事件監聽器:就是程式中的MyClickListener類,監聽器必須有我們手動實現,實現監聽器類的關鍵就是實現處理器的方法;      -->註冊監聽器:只要呼叫事件源的setOnClicklistener方法即可 4、在程式中實現事件監聽器有以下幾種方法:      A、內部類實現監聽器,如上面程式碼所示;      B、外部類實現監聽器(比較少見);      C、Activity本身作為事件監聽器類(使程式混亂);      D、匿名內部類作為事件監聽器(常用);      匿名內部類作為事件監聽器比起內部類實現事件監聽器少了在            之後直接進行OnClick的建立沒有中間的定義事件的監聽器:       基於回撥的事件處理: 1、什麼是回撥機制:  如果事件監聽機制是一種委託式的事件處理,那麼回撥機制則恰好相反們對於回撥的事件處理模型來說事件源和事件監聽器是統一的,或者說事件監聽器完全小時了,當用戶在GUI元件上激發某一個事件時,元件自己特定的方法將會負責處理該事件;      為了使用回撥機制類處理GUI元件上所發生的事情,我們需要為該元件提供對應的事件處理方法,而JAVA又是一種靜態語言,無法動態的新增方法,因此只能繼承GUI元件類,並重寫該類的事件處理方法來實現。 2、Android為所有GUI元件提供了一些事件處理的回撥方法(已View為例):      -->boolean onKeyDown(int keyCode,KeyEvent event):當用戶在該元件上按下某個按鍵時觸發的方法;      -->boolean onKeyLongPress(int keyCode,KeyEvent event ):當用戶在該元件下長按某個按鍵時觸發的方法;      -->boolean onKeyShortcut(int keyCode,KeyEvent event ):當一個鍵盤的快捷鍵事件發生時觸發該方法;      -->boolean onKeyUp(int keyCode,KeyEvent event ):當用戶在某個元件上鬆開某個按鍵時觸發該方法;      -->boolean onTouchEvent(MotionEvent event):當用戶在該元件上觸發觸控式螢幕事件時觸發該方法;      -->boolean onTrackballEvent(MotionEvent event ):當用戶在該元件上觸發軌跡球事件時觸發該方法; 3、下面列舉一個簡單的回撥事件處理:      回撥事件處理機制通過自定義View來實現,自動億View時重寫該View的事件處理方法即可,       public class MyButton extends Button
{
    public MyButton(Context contextAttributeSet set)
    {
        super(context,set);
}

    @Override
public boolean onKeyDown(int KeyCodeKeyEvent event)
    {
        super.onKeyDown(KeyCode,event);
Log.v("-Crazeit org-","The onKeyDown in Button");
//        返回true表明該事件不會向外擴散
return true;
}
}
4、響應系統設定的事件:      Configuration類簡介:描述手機裝置上的配置資訊,這寫配置資訊既包括使用者特定的配置項,也包括系統的動態裝置配置。(此項內容不做詳細瞭解); Handler訊息傳遞機制: 1、Handler類的主要作用:      A、在新啟動的執行緒中傳送訊息;      B、在主執行緒中獲取、處理訊息;