【问题标题】:How do I remove delay between dispatchTouchEvent and subview's onClick?如何消除 dispatchTouchEvent 和子视图的 onClick 之间的延迟?
【发布时间】:2012-07-14 20:14:44
【问题描述】:

我有一个自定义 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(),而无需进一步的用户操作?

【问题讨论】:

标签: android events layout


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 2019-01-22
    相关资源
    最近更新 更多