Как убрать задержку между dispatchTouchEvent и onClick подпредставления?

1

У меня есть пользовательский вид подкласса, на который я визуализирую свою графику, и другой подкласс 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);
    }
    ...
}

Метод subview onClick() не вызывается до тех пор, пока я не коснусь и не открою "главное" представление.

Вопрос: как я могу удалить или свести к минимуму эту задержку, так что onClick() вызывается в разумные сроки без дальнейшего действия пользователя?

Теги:
layout
events

1 ответ

0

Проблема в том, что "клик" состоит из пресса и события релиза. Таким образом, вы никогда не получите клик-событие, если вы также не отпустите кнопку. Используйте OnTouchListener в childview, как и в родительском представлении, - тогда вы сможете получить одно и то же событие.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню