一开始搞的想死,相当的莫名其妙,搞清楚了发现很强大,呵呵。
@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去拿这个点的相关信息就可以了。
嘿嘿,搞定,收获还是很大的,哈哈