2

我有一个自定义 View 子类,用于渲染我的图形,还有另一个 View 子类(实际上是 LinearLayout 的一个子类),有时用于覆盖图形信息。第二个视图包含一个 ImageView,我将其用作触发事件的按钮。

正如我已经实现的那样,在第一个视图接收 onTouchEvent 和在其子视图上调用 dispathTouchEvent() 和 ImageView 的 onClickListener 的 onClick() 被调用之间存在意外延迟。以下是相关代码:

@Override
public boolean onTouchEvent(MotionEvent event)
{
    if ( getPopupRect().contains(event.getX(), event.getY()) )
    {
        // translate to relative coordinates
        PointF popupOrigin = getPopupPoint();
        event.setLocation(event.getX() - popupOrigin.x, event.getY() - popupOrigin.y);
        mPopup.dispatchTouchEvent(event);
    }
    ...
}

在我触摸并释放“主”视图之前,不会调用子视图的 onClick() 方法。

问题:如何消除或最小化这种延迟,以便在合理的时间内调用 onClick() 而无需进一步的用户操作?

4

1 回答 1

0

问题在于“点击”既包含新闻,也包含发布事件。因此,除非您还释放按钮,否则您将永远不会收到点击事件。在子视图上使用 OnTouchListener,就像在父视图上一样 - 然后您将能够获得相同的事件。

于 2013-06-03T14:46:53.197 回答