Android 单击+双击+短按+长按 逻辑
ACTION_DOWN事件
->mPrivateHandler.sendEmptyMessageDelayed(SWITCH_TO_SHORTPRESS, TAP_TIMEOUT)
? ? ? ?發延遲處理的消息SWITCH_TO_SHORTPRESS (短按) 計時
->mPrivateHandler.sendEmptyMessageDelayed(SWITCH_TO_LONGPRESS, LONG_PRESS_TIMEOUT)
? ? ? ?發延遲處理的消息SWITCH_TO_LONGPRESS (長按) 計時
ACTION_UP事件
(1)ACTION_UP?<?SWITCH_TO_SHORTPRESS?<?SWITCH_TO_LONGPRESS?(單擊/雙擊)發生在SWITCH_TO_SHORTPRESS和SWITCH_TO_LONGPRESS處理之前 (快速點擊_1)
? ? ? ?->清除mPrivateHandler中SWITCH_TO_SHORTPRESS和SWITCH_TO_LONGPRESS消息
? ? ? ?->mPrivateHandler.sendEmptyMessageDelayed(RELEASE_SINGLE_TAP, getDoubleTapDelay())
? ? ? ? ? ? ?發延遲處理的消息RELEASE_SINGLE_TAP (二次計時)
? ? ? ?->(1)DoubleTapDelay <?ACTION_DOWN?第一次ACTION_DOWN+ACTION_UP之后的getDoubleTapDelay()時間內沒有ACTION_DOWN
? ? ??? ? ? ?? ? ->處理RELEASE_SINGLE_TAP
? ? ??? ? ? ? ???->doShortPress()(短按)
? ? ? ?->(2)ACTION_DOWN?<?DoubleTapDelay第一次ACTION_DOWN+ACTION_UP之后的getDoubleTapDelay()時間內有ACTION_DOWN
? ? ? ? ? ? ? ???->清除RELEASE_SINGLE_TAP ,進TOUCH_DOUBLE_TAP_MODE模式?
? ? ??? ? ? ? ???->發延遲處理的消息SWITCH_TO_SHORTPRESS +發延遲處理的消息SWITCH_TO_LONGPRESS
? ? ??? ? ? ? ???->(1)ACTION_UP<SWITCH_TO_SHORTPRESS再次發生ACTION_UP事件 (快速點擊_2)
? ? ??? ? ? ? ????? ? ? ???->清除mPrivateHandler中SWITCH_TO_SHORTPRESS和SWITCH_TO_LONGPRESS消息
? ? ??? ? ? ? ????? ? ? ???->doDoubleTap()?(雙擊)
? ? ??? ? ? ? ???->(2)SWITCH_TO_SHORTPRESS?<?ACTION_UP?<?SWITCH_TO_LONGPRESS
(2)?SWITCH_TO_SHORTPRESS?<ACTION_UP?<?SWITCH_TO_LONGPRESS?(短按)?
? ? ? ?->處理SWITCH_TO_SHORTPRESS
? ? ? ?->清除mPrivateHandler中SWITCH_TO_LONGPRESS消息
? ? ? ?->doShortPress()(短按)
(3)?SWITCH_TO_SHORTPRESS?<?SWITCH_TO_LONGPRESS?<?ACTION_UP?(長按)發生在SWITCH_TO_SHORTPRESS和SWITCH_TO_LONGPRESS處理之后 (長按模式)
期間mPrivateHandler會處理SWITCH_TO_SHORTPRESS和SWITCH_TO_LONGPRESS消息
? ? ? ?->處理SWITCH_TO_SHORTPRESS
? ? ? ?->處理SWITCH_TO_LONGPRESS (長按)
??
總結
以上是生活随笔為你收集整理的Android 单击+双击+短按+长按 逻辑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WebView::drawExtras
- 下一篇: WebView.onDraw (Andr