Java Android开发-OnTouchListener-如何使用?

Java Android开发-OnTouchListener-如何使用?,java,android,ontouchlistener,Java,Android,Ontouchlistener,我想知道一个人如何使用OnTouchListener。(我正在使用Android Studio。) 这是我的代码,当我按下“振动”按钮时,按钮图像不会变为按下状态: vibrateButton = (Button) findViewById(R.id.button_vibrate); vibrationInstance = (Vibrator) getSystemService(this.VIBRATOR_SERVICE); vibrateButtonPressed = fals

我想知道一个人如何使用
OnTouchListener
。(我正在使用Android Studio。)

这是我的代码,当我按下“振动”按钮时,按钮图像不会变为按下状态:

vibrateButton = (Button) findViewById(R.id.button_vibrate);
    vibrationInstance = (Vibrator) getSystemService(this.VIBRATOR_SERVICE);
    vibrateButtonPressed = false;
    if (!(vibrationInstance.hasVibrator())) {
        vibrateButton.setEnabled(false);
    }
    vibrateButton.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            if(motionEvent.getAction() == MotionEvent.ACTION_UP){
                vibrationInstance.cancel();
            }
            if(motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
                vibrationInstance.vibrate(vibrationPattern, 0);
            }
            return false;
        }


    });

这就是使用
OnTouchListener
的方式,以及
返回false的必要性?谢谢

我猜您的应用程序正在崩溃,因为您忘记将权限添加到清单文件。确保它在里面:


顺便说一句,如果您想接收视图中发生的所有触摸事件,您应该在
OnTouchListener
返回true
,我想您的应用程序正在崩溃,因为您忘了将权限添加到清单文件中。确保它在里面:


顺便说一句,如果您想接收视图中发生的所有触摸事件,您应该在
OnTouchListener

返回true
,这是使用
OnTouchListener
的一种方法。至于
return false
-该方法被声明为返回一个
布尔值(表示侦听器是否已使用该事件)。但这会使我的应用程序崩溃。。。那么语法正确吗?在问题中补充说它会使我的应用程序崩溃。那么日志是什么样子的呢?这里应该有一个异常,这将解释它崩溃的原因。这是使用
OnTouchListener
的一种方法。至于
return false
-该方法被声明为返回一个
布尔值(表示侦听器是否已使用该事件)。但这会使我的应用程序崩溃。。。那么语法正确吗?在问题中补充说它会使我的应用程序崩溃。那么日志是什么样子的呢?应该有一个例外,这可以解释为什么它会崩溃。它不工作。它阻止了它的撞击,但没有使它震动(
return true
就像我在回答中说的那样。它只会在按下时震动,因为你只调用了
rimble
那么动作就是
MotionEvent。动作向下
它不起作用。它阻止了它崩溃,但没有使它震动(
return true
就像我在回答中说的那样。它只会在按下时震动,因为你只调用
strimb
那么动作就是
MotionEvent。动作向下