PointerIndex versus id in android



我指的是一些网站,比如http://developer.android.com/reference/android/view/MotionEvent.htmlhttp://www.vogella.com/tutorials/AndroidTouch/article.html学习MotionEvent用于设计用户界面。问题是我正在混淆术语,如pointerIndex,Id,getActionIndex, getactionmask和其他与MotionEvent相关的重要方法。

  • 指针索引告诉我们事件发生在当前指针集中的哪个指针

  • 指针ID是分配给每个指针的唯一ID

指针的索引可以改变,但它的ID保持不变。这最好用一个例子来解释。

假设你在屏幕上有一个指针,然后用第二个指针触摸屏幕。每个指针都有自己的id和索引。假设你现在移除第一个指针。

唉!辅助指针现在变成了主指针!所以它的下标会变成之前被移除的指针的下标也就是说它的下标从1变成了0。但它的id将保持不变。

From pg 609, Pro Android 2, Issue 2:

MotionEvent对象包含从索引0开始的指针的信息一直到那个物体中报告的手指数。指针索引总是从0开始。如果有三个手指报告,指针索引将为0,1,2。等方法的调用getX()必须包含所需手指的指针索引的信息。指针id是整数值,表示手指被跟踪了。指针id从第一个手指的0开始向下,但不要总是从0开始,当手指来来回回屏幕上。把指针ID看作那个手指while的名称它正在被安卓系统追踪。

例如,想象一对两个手指的触摸序列,从手指1向下开始,然后手指2向下,然后手指1向上,然后手指向上。向下的第一个手指将获得指针ID 0。的第二个手指向下会得到指针ID 1。一旦第一根手指消失向上,手指2仍然与指针ID 1相关联。而指针索引的手指2变成0,因为指针Index总是从0开始。

在这个例子中,指针ID 1从指针索引1开始向下,然后移动到指针索引0,一旦手指1离开屏幕上。

你的应用程序将使用指针id来链接相关的事件到一个特定的手指,即使涉及到其他手指

运动事件用动作代码和一组轴值来描述运动。动作代码指定发生的状态变化,例如指针向下或向上。

每个指针都有一个唯一的id,当它第一次下降时分配(由ACTION_DOWNACTION_POINTER_DOWN表示)。指针id保持有效,直到指针最终上升(由ACTION_UPACTION_POINTER_UP表示)或当手势被取消(由ACTION_CANCEL表示)。

指针的指针索引可以从一个事件改变到下一个事件,但是只要指针保持活动状态,指针的指针id就保证保持不变。

一个动作事件可以包含多个手指。多点触控就是这样做的。每个向下的手指被称为指针。每个指针都有一个唯一的id,并将在触摸中的一系列运动事件中使用该id。在运动事件中,有一个指针列表。数组的每个索引引用1个指针。这些id并不总是在相同的索引中,它们可以被移动。

除了MOVE之外的每个动作事件都有一个动作索引。动作索引是引起事件的指针索引。(移动没有一个,因为多个手指可以移动)。你可以用它来找出什么是新的手指触摸或抬起。

getactionmask返回发生的事件类型——向下、向上、移动等。你需要调用这个的原因是因为Android做了一些愚蠢的事情,使用一些技巧让变量保存两个值。你可以忽略它,你只需要知道如何调用这个函数来获取类型。

最新更新