触摸反馈

160 阅读1分钟

重写onTouchEvent(),在方法内部定制触摸反馈算法

MotionEvent系列方法

动作

  • ACTION_UP
  • ACTION_MOVE
  • ACTION_DOWN
    注:并不是某一个点的移动,有点移动就会调用,没有api确认是哪个点的移动
  • ACTION_POINTER_DOWN
  • ACTION_POINTRE_UP

getActionMasked() 和 getAction()

  • getAction()是比较老的使用方法,表示两个信息。

  • getActionMasked()只表示一个信息,即表示什么动作,无法表示动作是第几个手指(第几个手指使用getActionIndex())。 自定义触摸算法时,都使用getActionMasked()即可。

getX() 和 getRawX()

  • getX()getY() - 触摸点相对于View的位置。

    注:多个手指的话,获得的是index为0的手指的坐标。

  • getRawX()getRawY() - 触摸点相对于屏幕的位置

getPointerCount()

获取当前触摸手指个数。用来遍历当前触摸手指。

event.getX(i)
event.getX()相当于event.getX(0)

一个手指 -  p ( x , y , index, id )    
1. index会变(用来遍历) -- 假如前置手指抬起,后面的index会变化,index永远是连续的。  
2. id不会变(用来追踪)。 -- id会复用, id的复用会导致index的重新调整。 
3. 一个eventAction: ACTION_MOVE  可以对应多个p, 因为p是针对view的。 getX(index) 获取对应手指的位置

getActionIndex()

针对ACTION_POINTER_DOWN和ACTION_POINTRE_UP设计出来的