布局
> Container是一个相对布局,包含两个自定义视图:OuterView1和InnerView2
>外部View1是一个自定义视图,匹配父级的大小(全屏)
> Inner View2也是一个自定义视图,放在OuterView1的顶部,重叠它.
在OuterView1和InnerView2上,我想在onSingleTapConfirmed()和onFling()上捕获这些触摸事件.
OuterView1和InnerView2重叠的区域,我希望将控件传递给两个视图的触摸事件方法.
我试过这个:
集装箱类
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
outerView1.onTouchEvent(ev);
innerView2.onTouchEvent(ev);
return false;
}
OuterView1类
@Override
public boolean onTouchEvent(MotionEvent event) {
gesture.onTouchEvent(event);
return true;
}
gesture是GestureDetector.SimpleOnGestureListener的一个实例,带有onDown(),onFling()和onSingleTapConfirmed()方法的日志语句
InnerView2类
@Override
public boolean onTouchEvent(MotionEvent event) {
gesture.onTouchEvent(event);
return true;
}
gesture是GestureDetector.SimpleOnGestureListener的一个实例,onFling()和onSingleTapConfirmed()方法的日志语句
通过这种方法,我始终在两个视图的onDown()方法中进行回调.但我没有在onSingleTapConfirmed()和onFling()方法上看到一致的行为
当我点击红色圆圈(在屏幕截图中)三次,我有三种不同的行为
>首先尝试(期望的行为)
10-14 09:03:14.155: I/OuterView1(27776): OuterView1.onDown()
10-14 09:03:14.155: I/InnerView2(27776): InnerView2.onDown()
10-14 09:03:14.155: W/GestureDetector(27776): [pen gesture] isConsideredDoubleTap - timeout
10-14 09:03:14.155: I/InnerView2(27776): InnerView2.onDown()
10-14 09:03:14.460: I/OuterView1(27776): OuterView1.onSingleTapConfirmed()
10-14 09:03:14.460: I/InnerView2(27776): InnerView2.onSingleTapConfirmed()
>第二次尝试(只有一个视图获取onSingleTapConfirmed())
10-14 09:04:11.615: I/OuterView1(27776): OuterView1.onDown()
10-14 09:04:11.615: I/InnerView2(27776): InnerView2.onDown()
10-14 09:04:11.615: W/GestureDetector(27776): [pen gesture] isConsideredDoubleTap - timeout
10-14 09:04:11.615: I/InnerView2(27776): InnerView2.onDown()
10-14 09:04:11.915: I/OuterView1(27776): OuterView1.onSingleTapConfirmed()
>第三次尝试(一个视图获取onFling()而另一个获取onSingleTapConfirmed())
10-14 09:04:04.180: I/OuterView1(27776): OuterView1.onDown()
10-14 09:04:04.180: I/InnerView2(27776): InnerView2.onDown()
10-14 09:04:04.180: W/GestureDetector(27776): [pen gesture] isConsideredDoubleTap - timeout
10-14 09:04:04.180: I/InnerView2(27776): InnerView2.onDown()
10-14 09:04:04.255: I/InnerView2(27776): InnerView2.onFling()
10-14 09:04:04.480: I/OuterView1(27776): OuterView1.onSingleTapConfirmed()
你能帮我在OuterView1和InnerView2上捕捉触摸事件吗?