Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么在SurfaceView onTouchEvent()上返回true?_Android_Surfaceview_Touch Event - Fatal编程技术网

Android 为什么在SurfaceView onTouchEvent()上返回true?

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()");

我正在覆盖SurfaceView的onTouchEvent()。每当我触摸手机屏幕时,它都会打印触摸事件的坐标。这是我的代码:

    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的事件(这是触摸屏幕时的第一个事件)