android下多点触摸

一开始搞的想死,相当的莫名其妙,搞清楚了发现很强大,呵呵。

 

@Override
        public boolean onTouchEvent(MotionEvent event) {
            int action = event.getActionMasked();
            if (action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_POINTER_DOWN) {
                int i = event.getActionIndex();
                Point p = new Point((int) event.getX(i), (int) event.getY(i));
                for (int j = 0; j < mRect.length; j++) {
                    if (mRect[j].contains(p.x, p.y) ) {
                        click(j);
                    }
                }
            }

最关键的是这个MotionEvent  这个东西,半猜半试的。

每当有一个action时,都会触发一个event,这个时候拿 event.getAction() 时会是 他的code,为了区分是哪个pointer发生的这个event,会加上个mask 这里第一个手指按下,第二个手指点击时getAction = 261 就是0xff00 + 5,5是 action_pointer_down ,所有就要调用一个函数 event.getActionMasked() 得到这个action,然后判断这个action是不是我们想要的,如果是,就拿到event.getActionIndex(),然后根据此index去拿这个点的相关信息就可以了。

嘿嘿,搞定,收获还是很大的,哈哈

 

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据