2

グラフィックをレンダリングするカスタム View サブクラスと、グラフィック情報のオーバーレイに使用する別の View サブクラス (実際には LinearLayout のサブクラス) があります。この 2 番目のビューには、イベントをトリガーするボタンとして使用する 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() メソッドは、「メイン」ビューに触れて離すまで呼び出されません。

質問: この遅延を削除または最小限に抑えるにはどうすればよいですか?

4

1 に答える 1

0

問題は、「クリック」がプレス イベントとリリース イベントの両方で構成されていることです。したがって、ボタンも離さない限り、クリックイベントは発生しません。親ビューで行うように、子ビューで OnTouchListener を使用すると、同じイベントを取得できます。

于 2013-06-03T14:46:53.197 に答える