我指的是一些类似的网站 http://developer.android.com/reference/android/view/MotionEvent.html http://www.vogella.com/tutorials/AndroidTouch/article.html 学习MotionEvent来设计用户界面。 问题是我对诸如pointerIndex,Id,getActionIndex,getActionMasked等术语以及与MotionEvent相关的其他重要方法感到困惑。
答案 0 :(得分:1)
动作事件可以包含多个手指。这就是多点触控的完成方式。每个手指向下称为指针。每个指针都有一个唯一的id,并将在触摸中的整个运动事件系列中使用该id。在运动事件中,有一个指针列表。数组的每个索引引用1个指针。 ID并不总是在相同的索引中,它们可以移动。
除了MOVE之外的每个动作事件都有一个动作索引。动作索引是导致事件的指针索引。 (移动没有,因为多个手指可能已经移动)。您可以使用它来查找触及或抬起的新手指。
getActionMasked返回发生的事件类型 - 向下,向上,向移动等。你需要调用它的原因是因为Android做了一些愚蠢的事情,并使用变量来使用一些技巧来保存2个值。您可以忽略它,您只需要知道调用此函数来获取类型。
答案 1 :(得分:1)
动作事件根据动作代码和一组轴值来描述动作。动作代码指定发生的状态变化,例如指针向下或向上。
每个指针都有一个唯一的ID,该ID在第一次出现故障时分配(由ACTION_DOWN
或ACTION_POINTER_DOWN
表示)。指针ID保持有效,直到指针最终上升(由ACTION_UP
或ACTION_POINTER_UP
表示)或手势被取消(由ACTION_CANCEL
表示)。
指针的指针索引可以从一个事件更改为下一个事件,但只要指针保持活动状态,指针的指针ID就保证保持不变。
答案 2 :(得分:1)
指针索引:告诉我们事件所在的当前指针集中的哪个指针
指针ID:分配给每个指针的唯一ID
指针的指针索引可能会改变,但它的ID将保持不变。最好用一个例子来解释。
假设您在屏幕上有一个指针,然后用第二个指针触摸屏幕。这些指针中的每一个都有它们的id和索引。说你现在删除第一个指针。
唉!辅助指针现在成为主指针!因此,它的索引将被更改为刚删除的前一个指针的索引,即它的索引已从1更改为0.但它的id将保持不变。
答案 3 :(得分:0)
摘自pg 609,Android Pro 2,第2版:
MotionEvent对象包含有关从索引0开始的指针的信息 并增加到该对象中报告的手指数量。 指针索引始终从0开始。如果有三个手指 报告,指针索引将为0、1、2。
getX()
必须包含您想要的手指的指针索引 相关信息。指针ID是整数值,代表哪个 手指被跟踪。第一个手指的指针ID以0开头 向下,但是当手指来回移动时,不要总是从0开始 屏幕。将指针ID视为该手指的名称,而 Android正在对其进行跟踪。例如,想象一下两个手指的一对触摸序列, 从手指1向下,然后手指2向下,然后手指1向上, 然后手指2向上。向下的第一指将获得指针ID 0。 第二根手指向下将获得指针ID 1。 向上,手指2仍将与指针ID 1 关联。鉴于 手指2的指针索引变为0,因为指针 索引始终从0开始。
在此示例中,指针ID 1进入时以指针索引1开始 向下移动,然后在手指1离开 屏幕。
您的应用将使用指针ID将关联的事件链接在一起 甚至牵扯到其他手指