"Nephew" 观看次数阻止捏合手势
"Nephew" views block pinch gesture
我有一个自定义视图的层次结构,如下所示:
- 自定义视图 A 有几个视图 B 作为子视图
- 自定义视图 B 就像一个按钮,需要对 click/tap
做出反应
- 自定义视图 C 具有捏合手势,是 A 的兄弟视图,在视图层次结构中位于 A 之下
当仅在自定义视图 A 上捏合时,一切顺利,因为 A 没有捕捉到任何运动事件,而其下方的视图 C 接收到事件并做出捏合手势(缩放 in/out)正确。
点击自定义视图 B 时,点击视图,一切正常。
问题是,当尝试捏合并且一根手指在视图 B 上开始时,它会捕获它的事件并且这些事件不会在其下传播并且在自定义视图 C 上不会发生捏合。
我想让视图 B 仅对点击做出反应,并将所有其他事件(捏合)传递给其下方的视图,在本例中为自定义视图 C。
我怎样才能实现这种情况?
找到解决方案!
我们试图找到一个 TapConfirmed 事件(使用 gestureDetector 来找到它),然后我们发送事件 直接给兄弟传递事件:
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if (conditionToIntercept) {
return true;
}
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if(conditionToIntercept{
if (!gestureDetectorCompat.onTouchEvent(event)) {
siblingView.dispatchTouchEvent(event);
return true;
}
}
return false;
}
我有一个自定义视图的层次结构,如下所示:
- 自定义视图 A 有几个视图 B 作为子视图
- 自定义视图 B 就像一个按钮,需要对 click/tap 做出反应
- 自定义视图 C 具有捏合手势,是 A 的兄弟视图,在视图层次结构中位于 A 之下
当仅在自定义视图 A 上捏合时,一切顺利,因为 A 没有捕捉到任何运动事件,而其下方的视图 C 接收到事件并做出捏合手势(缩放 in/out)正确。
点击自定义视图 B 时,点击视图,一切正常。
问题是,当尝试捏合并且一根手指在视图 B 上开始时,它会捕获它的事件并且这些事件不会在其下传播并且在自定义视图 C 上不会发生捏合。
我想让视图 B 仅对点击做出反应,并将所有其他事件(捏合)传递给其下方的视图,在本例中为自定义视图 C。
我怎样才能实现这种情况?
找到解决方案!
我们试图找到一个 TapConfirmed 事件(使用 gestureDetector 来找到它),然后我们发送事件 直接给兄弟传递事件:
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if (conditionToIntercept) {
return true;
}
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if(conditionToIntercept{
if (!gestureDetectorCompat.onTouchEvent(event)) {
siblingView.dispatchTouchEvent(event);
return true;
}
}
return false;
}