1

我用'onTouch'方法写了如下。

但是 'getPointerCount()' 和 'getAction()' 总是吐出相同的值。

此代码无法识别多点触控。

当 MotionEvent.ACTION_UP 发生时,不会调用 'onTouch' 方法。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    relativelayout = (RelativeLayout) findViewById(R.id.relativeLayout);

    relativelayout.setOnTouchListener(new OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {
            Log.i("test", "multiTouchCount : " + event.getPointerCount());
            Log.i("test", "action : " + event.getAction());
            return false;
        }
    });
}

所以,我用 onTouchEvent 方法尝试了同样的事情,这很有效。

public boolean onTouchEvent(MotionEvent event) {

    Log.i("test", "multiTouchCount : " + event.getPointerCount());
    Log.i("test", "action : " + event.getAction());

    return super.onTouchEvent(event);
}

“onTouch”方法有什么问题?

4

1 回答 1

5

onTouch()Listener 的方法中,你无条件地 return false,这会导致 View 在第一个事件之后不再接收触摸事件ACTION_DOWN,直到ACTION_DOWN再次发生。

如果要保证View会不断收到多点触摸事件,true无条件返回。

于 2015-02-28T03:27:24.873 回答