課程
/移動開發(fā)
/Android
/Android-五子連珠
請問為什么要在ACTION_DOWN返回true,聽老師說是把觸摸事件傳遞到自己本省并處理,可這個怎么理解,因為我還沒去了解Android控件的事件分發(fā)機制
2017-01-19
源自:Android-五子連珠 2-4
正在回答
首先事件指的是觸摸事件,分發(fā),為什么要分發(fā)呢,就像你給自己的外甥發(fā)紅包一樣,這樣也叫分發(fā),那么這樣就有viewgroup,viewgroup里面有子view,ViewGroup的相關事件有三個:onInterceptTouchEvent、dispatchTouchEvent、onTouchEvent。View的相關事件只有兩個:dispatchTouchEvent、onTouchEvent。
簡單的來說就是viewgroup遍歷自己的子view,如果子view中有viewgroup,就繼續(xù)遍歷這個viewgroup的子view,都是調用的dispatchTouchEvent來分發(fā)事件,dispatchTouchEvent會返回一個布爾值類型的參數,事件會一直分開,一直在某個view調用dispatchTouchEvent返回true,表示事件分發(fā)到此結束,返回true的這個view就是需要接受這個事件的view,
ViewGroup的dispatchTouchEvent是真正在執(zhí)行“分發(fā)”工作,而View的dispatchTouchEvent方法,并不執(zhí)行分發(fā)工作,或者說它分發(fā)的對象就是自己,決定是否把touch事件交給自己處理,而處理的方法,便是onTouchEvent事件,這里說到了view的onTouchEvent事件是這個時候開始執(zhí)行,那么viewgroup的onTouchEvent什么時候執(zhí)行呢?,當所有的子view調用dispatchTouchEvent都是返回false的時候,這個時候viewgroup的onTouchEvent就會執(zhí)行
事實上,一次完整的Touch事件,應該是由一個Down、一個Up和若干個Move組成的
但是dispatchTouchEvent只是分發(fā)了Down事件,只有返回true的時候,證明這個view需要 這個事件,然后在繼續(xù)分發(fā)Up和Move事件給它
PogbaLIU 提問者
Listener呆 回復 PogbaLIU 提問者
舉報
Android游戲開發(fā)-五子連珠,本教程通過UI與邏輯實現雙人對戰(zhàn)
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優(yōu)惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-02-16
首先事件指的是觸摸事件,分發(fā),為什么要分發(fā)呢,就像你給自己的外甥發(fā)紅包一樣,這樣也叫分發(fā),那么這樣就有viewgroup,viewgroup里面有子view,ViewGroup的相關事件有三個:onInterceptTouchEvent、dispatchTouchEvent、onTouchEvent。View的相關事件只有兩個:dispatchTouchEvent、onTouchEvent。
簡單的來說就是viewgroup遍歷自己的子view,如果子view中有viewgroup,就繼續(xù)遍歷這個viewgroup的子view,都是調用的dispatchTouchEvent來分發(fā)事件,dispatchTouchEvent會返回一個布爾值類型的參數,事件會一直分開,一直在某個view調用dispatchTouchEvent返回true,表示事件分發(fā)到此結束,返回true的這個view就是需要接受這個事件的view,
ViewGroup的dispatchTouchEvent是真正在執(zhí)行“分發(fā)”工作,而View的dispatchTouchEvent方法,并不執(zhí)行分發(fā)工作,或者說它分發(fā)的對象就是自己,決定是否把touch事件交給自己處理,而處理的方法,便是onTouchEvent事件,這里說到了view的onTouchEvent事件是這個時候開始執(zhí)行,那么viewgroup的onTouchEvent什么時候執(zhí)行呢?,當所有的子view調用dispatchTouchEvent都是返回false的時候,這個時候viewgroup的onTouchEvent就會執(zhí)行
事實上,一次完整的Touch事件,應該是由一個Down、一個Up和若干個Move組成的
但是dispatchTouchEvent只是分發(fā)了Down事件,只有返回true的時候,證明這個view需要 這個事件,然后在繼續(xù)分發(fā)Up和Move事件給它