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。怎么做