android 多點觸控的幾個概念

getActionMasked()指針

多點觸控時使用getActionMasked()取代getAction()來獲取事件類型對象

Pointer事件

一個pointer就表明一個觸摸點。一個MotionEvent對象中可能存儲多個pointer的相關信息,每一個pointer都有本身的id和index,id在整個事件流中是不會發生變化的,可是index會發生變化get

  • PointerId

每根手指從按下、移動到離開屏幕,每一個手指都會擁有一個固定PointerId的值io

  • PointerIndex

每根手指從按下、移動到離開屏幕,每根手指在每個事件的Index多是不固定的table

  • PointerId和PointIndex的例子
事件 PointerId PointerIndex
依次按下三根手指 三根手指的id依次爲0、一、2 三根手指的index依次爲0、一、2
擡起第二根手指 第一根手指的id爲0,第三根手指的id爲2 第一根手指的index爲0,第三根手指的index變爲1
擡起第一根手指 第三根手指的id爲2 第三根手指的index變爲0

相關事件方法

事件 簡介
ACTION_DOWN 第一個手指初次接觸到屏幕時觸發
ACTION_MOVE 手指在屏幕上滑動時觸發,會屢次觸發
ACTION_UP 最後一個手指離開屏幕時觸發
ACTION_POINTER_DOWN 有非主要的手指按下(即按下以前已經有手指在屏幕上)
ACTION_POINTER_UP 有非主要的手指擡起(即擡起以後仍然有手指在屏幕上)

相關方法tab

方法 簡介
getActionMasked() 在多點觸控中取代getAction()
getPointerCount() 獲取在屏幕上手指的個數
getX(int pointerIndex) 獲取某一個指針(手指)的X座標
getY(int pointerIndex) 獲取某一個指針(手指)的Y座標
getActionIndex() 獲取該事件對應的PointerIndex
findPointerIndex(int pointerId) 經過PointerId獲取到當前狀態下PointIndex
getPointerId(int pointerIndex) 獲取一個指針的PointerId,在手指按下和擡起之間ID始終不變
相關文章
相關標籤/搜索