android - Android 中的 onTouch 和 onTouchEvent 方法

标签 android touch-event ontouch

我用'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' 方法有什么问题?

最佳答案

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

如果要保证View持续接收多点触摸事件,无条件返回true

关于android - Android 中的 onTouch 和 onTouchEvent 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28777715/

相关文章:

android - 当用户未更新状态时如何跳过 switch.setOnCheckedChangeListener

android - 如何创建可重用的函数?

Android 为多个 ImageView 触发 onTouch 事件

javascript - 如何将 touchevent 字符串化,忽略任何 DOM 引用?

android - 将 Android NestedScrollView 水平滑动传递给父 View

android - 如何使同一个 ImageView 识别滑动和单击事件?

java - Android 多点触控 : Not detecting MotionEvent. ACTION_POINTER_DOWN

android - Android平台上 "Fatal signal 7 (SIGBUS) at 0x5937abd0 (code=2)"到底是什么意思?

android - 使用 MVP 从画廊/相机获取图像

android - 按下后退按钮需要在 Activity 中显示更新的值