記 學(xué)習(xí)使用Android 中事件的疑惑點(diǎn)
實(shí)現(xiàn) 拖拽有兩個(gè)方式每币,一個(gè)是繼承 onTouch 莺褒,處理 MotionEvent,一個(gè)是 使用 ViewDragerHelper霹菊。
使用 ViewDragerHelper 更輕松點(diǎn)镰官。
MotionEvent.getAction() 與 MotionEvent.getActionMasked() 的區(qū)別
看到 ViewDragerHelper 中處理 action 時(shí)使用的是 getActionMasked()
提前。getActionMasked()
和 getAction
https://stackoverflow.com/a/18284365
getAction() returns a pointer id and an event (i.e., up, down, move) information.
getActionMasked() returns just an event (i.e., up, down, move) information. Other info is masked out.
For example:
getAction() returns 0x0105.
getActionMasked() will return 0x0005, which is 0x0105 && ACTION_MASK.
1 . The value of ACTION_MASK is 0xFF. It masks the following actions.
* ACTION_DOWN 0, UP 1, MOVE 2
* ACTION_POINTER_DOWN 5, UP 6
2 . The value of ACTION_POINTER_ID_MASK is 0xFF00. It masked the pointer ID from following deprecated constants.
* ACTION_POINTER_1_DOWN 0x0005
* ACTION_POINTER_2_DOWN 0x0105
* ACTION_POINTER_3_DOWN 0x0205
如果關(guān)心第二根手指和第三根手指可以用 getAction
,其他的情況可以使用 getActionMasked()
泳唠。
ACTION_POINTER_X_DOWN 最多支持 同時(shí)三指觸控狈网,被廢棄了。如果需要同時(shí)處理更多觸控笨腥,可以使用下面的方法拓哺,可以支持到同時(shí)檢測 10 指。
event.getPointerId(event.getActionIndex())
scrollBy(x,y) scrollTo(x,y) setTranslationX(x,y)
scrollXX 移動(dòng)的是 View 中的內(nèi)容
setTranslationX 移動(dòng)的是 View