Android 为什么在SurfaceView onTouchEvent()上返回true?
我正在覆盖SurfaceView的onTouchEvent()。每当我触摸手机屏幕时,它都会打印触摸事件的坐标。这是我的代码:Android 为什么在SurfaceView onTouchEvent()上返回true?,android,surfaceview,touch-event,Android,Surfaceview,Touch Event,我正在覆盖SurfaceView的onTouchEvent()。每当我触摸手机屏幕时,它都会打印触摸事件的坐标。这是我的代码: public class MyGestureActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.i(TAG, "onCreate()");
public class MyGestureActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(TAG, "onCreate()");
panel = new MyGesturePanel(this);
setContentView(panel);
}
}
public class MyGesturePanel extends SurfaceView implements SurfaceHolder.Callback {
public boolean onTouchEvent(MotionEvent event) {
Log.i(TAG, "onTouchEvent! " + event.getX() + " " + event.getY());
return super.onTouchEvent(event);
}
}
如果我返回super.onTouchEvent(event),即使我没有在屏幕上松开手指,它也只打印1个事件(ACTION_DOWN)。我还试图打印返回的内容,结果返回为false
现在,我没有使用super.onTouchEvent(event),而是返回true。当我将返回值设置为true时,它的功能正常。当我把手指放在屏幕上时,它会打印出很多动作事件。(即使我的手指不动)
为什么呢?我做错什么了吗?建议只“硬编码”返回true吗
谢谢 在onTouchEvent()中返回true会告诉Android系统您已经处理了触摸事件,不需要进一步处理。如果返回false,Android系统将是onTouch事件的处理程序,并将覆盖您的代码,以处理任何超过ACTION_DOWN的事件(这是触摸屏幕时的第一个事件)