Как я могу поддерживать жест с одним указателем, когда включен режим изучения касанием?

У меня есть пользовательское представление, которое фиксирует подпись пользователя ( Джон Хэнкок). Я хочу, чтобы наше приложение было как можно более доступным, поэтому я делаю все возможное, чтобы оптимизировать наши экраны для TalkBack и Explore-by-Touch. Поскольку Explore-by-Touch изменяет все жесты одним пальцем на жесты двумя пальцами, это нарушает пользовательский вид подписи.

Мне бы хотелось, чтобы Explore-by-Touch объявлял описание содержимого представления при наведении курсора, а затем включал его, когда пользователь дважды нажимал. Это позволит им рисовать поверх представления одним указателем, как обычный пользователь.

Я искал, но трудно найти подробную документацию по библиотекам специальных возможностей Android. Есть идеи?

1 ответ

Решение

Когда функция "Изучение касанием" включена, события касания одним пальцем преобразуются в события зависания. Вы можете наблюдать эти события, добавив OnHoverListener к вашему представлению или переопределив View.onHoverEvent.

Как только вы перехватываете эти события, вы обычно можете просто передать их в свой обычный код обработки касания и сопоставить действия при наведении на действия касания (как показано ниже).

@Override
public boolean onHoverEvent(MotionEvent event) {
    if (mAccessibilityManager.isTouchExplorationEnabled()) {
        return onTouchEvent(event);
    } else {
        return super.onHoverEvent(event);
    }
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
        case MotionEvent.ACTION_HOVER_ENTER:
            return handleDown(event);
        case MotionEvent.ACTION_MOVE:
        case MotionEvent.ACTION_HOVER_MOVE:
            return handleMove(event);
        case MotionEvent.ACTION_UP:
        case MotionEvent.ACTION_HOVER_EXIT:
            return handleUp(event);
    }

    return false;
}
Другие вопросы по тегам