Android事件傳遞機制 零

2021-06-17 16:54:51 字數 1793 閱讀 9741

mainactivity如下:

package com.cn;

import android.os.bundle;

import android.view.motionevent;

import android.view.view;

import android.view.view.ontouchlistener;

/** * demo描述:

* * 在此基礎上繼續學習和認識android事件傳遞機制

* 認識事件傳遞的詳細過程

* * demo構成:

* 乙個普通的activity,自定義button.

* 在自定義button中覆寫dispatchtouchevent和ontouchevent

* 其返回值均為預設值,所以均為true.

* 在activity中為自定義button註冊touchlistener.並且覆寫

* 該activity的dispatchtouchevent和ontouchevent.

* 因為自定義button的ontouchevent預設返回為true.

* 表示事件已經消耗,不會繼續傳遞,所以activity中的

* ontouchevent方法不會呼叫

* *

* 即touch事件的處理順序為:

* 1 activity的dispatchtouchevent()方法

* 2 自定義button的dispatchtouchevent()方法

* 3 activity中自定義button的touchlistener執行

* 4 自定義button的ontouchevent()方法

* * 若把1中的現在的返回值取反,那麼2,3,4不會執行

* 同理,若把2中的現在的返回值取反,那麼後續的3,4不會執行

* 同理,若把3中的現在的返回值取反,那麼後續的4不會執行

* * 常量對應:

* down--->0

* up----->1

* move--->2

* */

public class mainactivity extends activity

private void init()

});}

@override

public boolean dispatchtouchevent(motionevent ev)

@override

public boolean ontouchevent(motionevent event)

}

eventbutton如下:

package com.cn;

import android.content.context;

import android.util.attributeset;

import android.view.motionevent;

import android.widget.button;

public class eventbutton extends button

@override

public boolean dispatchtouchevent(motionevent event)

@override

public boolean ontouchevent(motionevent event)

}

main.xml如下:

Android事件傳遞機制

android中的事件型別分為按鍵事件和螢幕觸控事件,touch事件是螢幕觸控事件的基礎事件,有必要對它進行深入的了解。乙個最簡單的螢幕觸控動作觸發了一系列touch事件 action down action move action move action move.action move acti...

Android事件傳遞機制

android開發過程中複雜混合控制項的難點之一的就是事件衝突。我們知道在處理事件衝突中,最重要的方法是 dispatchtouchevent onintercepttouchevent ontouchevent 通過作用這三個方法,我們可以達到事件的分發 攔截 消費的效果。在activity 無o...

Android事件傳遞機制

android中dispatchtouchevent,onintercepttouchevent,ontouchevent的理解 android中的事件型別分為按鍵事件和螢幕觸控事件,touch事件是螢幕觸控事件的基礎事件,有必要對它進行深入的了解。乙個最簡單的螢幕觸控動作觸發了一系列touch事件...