Android - 覆盖 TalkBack 手势

标签 android accessibility talkback

我想在我的应用程序中使用 TalkBack,但仍希望某些 Activity 的行为有所不同。例如,当进入一个特定的 Activity 时,我想在从那个按钮上抬起手指时选择一个按钮(触发按钮点击)。 TalkBack 仅支持双击以选择按钮。

如何“覆盖”TalkBack 手势?

谢谢!

最佳答案

您可以对 HOVER_EXIT 执行单击操作,但您需要做一些工作以防止 TalkBack 期望正常的双击操作。电话拨号器的 DialPadImageButton提供了这种行为的一个很好的例子。以下是该类代码的一些相关部分:

@Override
public boolean onHoverEvent(MotionEvent event) {
    // When touch exploration is turned on, lifting a finger while inside
    // the button's hover target bounds should perform a click action.
    if (mAccessibilityManager.isEnabled()
            && mAccessibilityManager.isTouchExplorationEnabled()) {
        switch (event.getActionMasked()) {
            case MotionEvent.ACTION_HOVER_ENTER:
                // Lift-to-type temporarily disables double-tap activation.
                setClickable(false);
                break;
            case MotionEvent.ACTION_HOVER_EXIT:
                if (mHoverBounds.contains((int) event.getX(), (int) event.getY())) {
                    simulateClickForAccessibility();
                }
                setClickable(true);
                break;
        }
    }

    return super.onHoverEvent(event);
}

/**
 * When accessibility is on, simulate press and release to preserve the
 * semantic meaning of performClick(). Required for Braille support.
 */
private void simulateClickForAccessibility() {
    // Checking the press state prevents double activation.
    if (isPressed()) {
        return;
    }

    setPressed(true);

    // Stay consistent with performClick() by sending the event after
    // setting the pressed state but before performing the action.
    sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);

    setPressed(false);
}

关于Android - 覆盖 TalkBack 手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17018252/

相关文章:

android - 在 Toast 中自定义 Android 对讲

android - 使用 TalkBack 时,Android focusable 和 importantForAccessibility 有什么区别?

java - 调用 LayoutInflater 的方法而不创建对象

java:我想从内部类返回快照键但得到空变量

angularjs - 使用 JAWS 屏幕阅读器的 Angular(单页应用程序)中的 "Same page link"问题

html - "Elements should not have tabindex greater than zero"- 非零 Tabindex 破坏验证和 508 合规性

Android - 阻止 TalkBack 读取应用程序名称和当前方向

android - addressList 大小为 0 Google map

android - 在启用混淆器的情况下以 Release模式编译 Android 应用程序时出现问题

android - 有没有办法在android对讲中宣布可绘制的文本字段