为什么onTouchEvent getPointerCount()方法总是返回1?

时间:2015-04-08 20:04:01

标签: android view ontouchevent touch-event

我试图让这个功能正常工作,但我遇到了麻烦。当我触摸View时,getPointerCount()方法总是返回0指针,当我用一根手指触摸屏幕时,1。当我用两根或多根手指触摸屏幕时,它总是返回1.你有没有想法?

我试过这段代码,

@Override
    public boolean onTouch(View view, MotionEvent me) {
        // No dragging during animation at the moment.
        // TODO: Stop animation on touch event and return to drag mode. 
        if (me.getPointerCount() >= 2) {
            mAnimate = false;
            mEnableTouchPressure = false;
            mRenderLeftPage = false;
            startCurl(CURL_NONE);
            mCurlState = CURL_NONE;
            mPageRight.setFlipTexture(false);
            mPageLeft.setFlipTexture(false);
            return false;
        } else {
            if (me.getAction() == MotionEvent.ACTION_DOWN) {
                Log.e("TAG_EVENT", me.getPointerCount() + "");
            } else {
                Log.e("TAG_EVENT - 2", me.getPointerCount() + "");
            }
        }
}

2 个答案:

答案 0 :(得分:0)

我认为是因为你应该为要处理的触摸事件返回true。

答案 1 :(得分:0)

您可以阅读关于MotionEvent.ACTION_MASK的信息。要捕获multiTouch的操作,您可以使用以下代码:

int action = (motionEvent.getAction() & MotionEvent.ACTION_MASK) % 5
switch(action) {
    case MotionEvent.ACTION_DOWN:
        System.out.println(motionEvent.getPointerCount());
        break;
}