我正在开发自定义 ViewGroup。它是某种径向菜单(类似于 android 相机应用程序中的选项菜单)。
我设法正确地布置和画孩子。我必须做的另一件事是覆盖触摸事件调度:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
for (int i=0; i<getChildCount(); i++) {
CircularView child=(CircularView) getChildAt(i);
if (child.viewMetrics.containsPoint(ev.getX(), ev.getY())) {
child.dispatchTouchEvent(ev);
return true;
}
}
return false;
}
child.viewMetrics.containsPoint()
如果事件坐标属于它们中的任何一个(方法调用,仔细检查,正常工作),我会遍历子级并调度事件。
似乎工作,但它并不完美。我注意到了这个问题:当我点击、按住手指并稍微移动它时,点击会中断。这是演示。
我查看了超类实现,并且有很多代码。我的第一个想法是复制它,但它取决于许多私人课程。
如何确保触摸事件调度正常工作?(不仅是点击,还有所有其他手势?)如果没有简单的方法来做到这一点,我将不胜感激有关移植默认实现的任何评论或建议或任何指向有关该主题的有用信息的链接。