Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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
Java 在Android上,如何捕捉视图区域内发生的所有触碰/触碰事件?_Java_Android_Multi Touch_Touch Event - Fatal编程技术网

Java 在Android上,如何捕捉视图区域内发生的所有触碰/触碰事件?

Java 在Android上,如何捕捉视图区域内发生的所有触碰/触碰事件?,java,android,multi-touch,touch-event,Java,Android,Multi Touch,Touch Event,我定义了如下自定义视图: public class MyView extends View{ String name; MyView(Context context, String name){ super(context); this.name = name; } @Override public boolean onTouchEvent(MotionEvent ev) { int action =

我定义了如下自定义视图:

public class MyView extends View{

    String name;

    MyView(Context context, String name){
        super(context);
        this.name = name;
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        int action = ev.getActionMasked();
        if(action ==  MotionEvent.ACTION_DOWN){
            Log.v("MyView", name + " down");                       
        } else if (action == MotionEvent.ACTION_UP){
            Log.v("MyView", name + " up");
        }
        return true;
    }
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
    int action = ev.getActionMasked();
    if(action ==  MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_POINTER_DOWN){
        Log.v("MyView", name + " down");                      
    } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_POINTER_UP){
        Log.v("MyView", name + " up");
    }
    return true;
}
现在,如果我创建两个像这样的MyView实例

MyView view1 = new MyView("view1");
MyView view2 = new MyView("view2");
如果我将它们添加到我的活动中的布局中:发生的情况如下:

仅触摸view1区域时,我会在日志中看到“view1向上”和“view1向下”消息。 当只触摸view2区域时,我会在日志中看到“view2向上”和“view2向下”消息。 但是,当我触摸view1时,不要松开手指触摸view2,我不会收到任何消息

如果在我的代码中添加
MotionEvent.ACTION\u POINTER\u DOWN
,如下所示:

public class MyView extends View{

    String name;

    MyView(Context context, String name){
        super(context);
        this.name = name;
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        int action = ev.getActionMasked();
        if(action ==  MotionEvent.ACTION_DOWN){
            Log.v("MyView", name + " down");                       
        } else if (action == MotionEvent.ACTION_UP){
            Log.v("MyView", name + " up");
        }
        return true;
    }
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
    int action = ev.getActionMasked();
    if(action ==  MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_POINTER_DOWN){
        Log.v("MyView", name + " down");                      
    } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_POINTER_UP){
        Log.v("MyView", name + " up");
    }
    return true;
}
现在,如果我触摸view1,不要松开手指触摸view2,我会收到日志消息,但仍然来自view1! 我希望在view2区域发生的事件被路由到view2。怎么做