android/java多点触控,whats&;在这种情况下,什么>>;?

android/java多点触控,whats&;在这种情况下,什么>>;?,java,android,multi-touch,masking,Java,Android,Multi Touch,Masking,我对android世界也是新的,对Java也是新的,但有几年的网络经验:呃,还有几年前的Java学习分数,我并没有完全落后:)。。但是我仍然不能真正理解“&”和“>>”在下面两行中的实际作用。。谁能解释一下吗 int action = event.getAction() & MotionEvent.ACTION_MASK; int pointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK)

我对android世界也是新的,对Java也是新的,但有几年的网络经验:呃,还有几年前的Java学习分数,我并没有完全落后:)。。但是我仍然不能真正理解“&”和“>>”在下面两行中的实际作用。。谁能解释一下吗

int action = event.getAction() & MotionEvent.ACTION_MASK;
int pointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
如果我理解的第一行是正确的,event.getAction()将返回一个包含大量信息的int,但由于我们只关心触发的操作,因此我们添加了“&MotionEvent.action\u MASK”来对该位进行排序“解析”。。我是对的还是完全错了

第2行我不知道“>>”是用来做什么的。。所以请解释:)

提前谢谢

习惯于(在旧版本的Android中)只返回非常基本的向上、向下、悬停(等)动作。这允许您执行类似于
event.getAction()==…
的操作,以确定这是否是一种特定类型的操作。然而,随着多点触摸的引入,触摸事件变得更加复杂。现在,指针信息与动作一起存储在“动作”中。在你发问之前:是的,他们可以用两种不同的方法来实现,但将整个行动的信息放在一个方法中难道不更容易吗

如JavaDocs中所示,
&
将只保留匹配的位(
a&b==1
用于两个位
a
b
当且仅当
a==b==1
)。您可能还想看看,哪些是整数,使用它们的位来表示各种状态

因此,当您调用
&MotionEvent.ACTION\u MASK
时,它将只保留与的位匹配的位(
11111111
,或最右边的8位)。这是存储操作的位置(请注意,所有操作整数值都小于255——最右边的8位)

下一行取第二组8位(从右边开始,它们是第8位到第15位,包括第8位到第15位),然后将它们右移8位,这样
1 0000
(为演示添加的空格)变为
1
。(该运算符为右移,在JavaDoc链接中也有解释。)


假设事件是
ACTION\u UP
,指针索引是6,它提供了关于事件和指针的信息。这将被表示为
(6并且event.getAction返回的操作比实际触发的操作更多,这有什么原因吗?感谢这一解释:),对于我来说,不直接在event.getAction:/…返回操作似乎仍然很明智。。还是我在这里遗漏了什么?