android - 启用触摸浏览后,如何保持单指针手势?

标签 android accessibility android-view talkback

我有一个捕获用户签名的自定义 View ( John Hancock )。我希望我们的应用程序尽可能易于访问,因此我特别注意确保针对TalkBackExplore-by-Touch 优化我们的屏幕。由于 Explore-by-Touch 将所有单指手势更改为两指手势,因此它打破了自定义签名 View 。

我想做的是让 Explore-by-Touch 在悬停时宣布 View 的内容描述,然后在用户双击时启用 View 。这将允许他们像普通用户一样使用单个指针在 View 顶部绘制。

我四处搜索,但很难找到有关 Android 辅助功能库的详细文档。有什么想法吗?

最佳答案

启用“触摸浏览”后,单指触摸事件将转换为悬停事件。您可以通过添加 OnHoverListener 来观看这些事件到您的 View 或覆盖 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;
}

关于android - 启用触摸浏览后,如何保持单指针手势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14328313/

相关文章:

android - 如何在 Activity 之间传递 double 的二维数组?

java - PDFBox - Accessible PDF - 如何根据可访问性指南检查 PDF 标签是否具有属性

iOS 辅助功能——在轻弹上做点什么?

android - 如何在 SurfaceView 上实现项目触摸

android - android 的 BaseAdapter notifyDataSetChanged 方法如何工作?

Android GCMIntentService onMessage 上下文问题

java - 如何在 Android Activity 上使用 Kotlin 扩展函数正确地进行空值检查

ios - 如何快速更改 VoiceOver 发音?

android - 检测自定义 View 上的长按?

Android 无法添加窗口报错