关于 MotionEvent 的笔记

概述

  • MotionEvent 不仅仅用来表示 触摸事件, 还可以是 鼠标/trackball/pen 等等事件.

  • 一个MotionEvent包含的信息: ACTION_DOWN 这种, 坐标, 压力, 大小, 方向.

  • 两个相邻的 MotionEvent 的 时间间隔差不多是 10–40 ms 之间.

    • 即, 这个时间段 其实也够了;
    • 即 每秒种保证了 25—100 次的刷新, 即使ui上的更新, 也感觉比较顺滑的了.

关于pointerId和pointerIndex

  • 每一个MotionEvent 都 包含了 当前所有 触摸点(Pointer)的信息—-即使它没有动.
    • 即如果有多个手指在屏幕上面, 即使只有一个手指动, 但是这个MotionEvent中包含了所有的pointer的信息(坐标/压力等).
    • 有两个不同的东西:
      • pointerId
        • 在一个pointer的down到up之间, 其值恒定;
        • 其值可能会大于 pointers的总数;
          • 因为中途可能会有pointer离开, 其对应的pointerId就空了(当然可能会被新down下去的pointer拿去用);
        • pointerId失效后, 可能会被新down下去的pointer拿去用.
      • pointerIndex
        • 一个pointer在down到up之间时, 其pointerIndex值是可能会有变化的.
        • 比如, 总共有4个pointers.
          一个pointer的pointerIndex为3,
          但此时pointerIndex为1的手指up了, 那么总共变成了3个pointers了,
          此时这个pointer的pointerIndex可能就会被调整为2了.
关于pointerId
  • 每一个触摸点 都有一个 pointerid—-这个是唯一的, 一直有效的.(但在up/pointer_up后会失效, 可能会别新按下去的手指拿去)
  • 获取 pointerId 的办法:

    int getPointerId(int pointerIndex)//参数是0什么的, 最大为: int getPointerCount()-1
    ----注意, 在每一个gesture中, 一个手指的 pointerIndex 可能会不同, 但在 pointerId 却是一样的.
              一个 pointerId 的有效期: 从这个手指 down/pointer_down 到 up/pointer_up 这一段时间之内.
        注意: pointerId 也是按 0,1,2,3...之类的序号排下去的.
              一个手指的pointerId 在 up/pointer_up 后就无效了, 
                    其可能会被 其它新 按下去的 手指拿去用. 
                ----这个要注意!
                ----即 pointerId 并非在 一个gesture 中一直唯一表明某一个手指的, 
                        而仅仅是指 一个手指d
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值