使用 drawingOrder 属性选择相同 ID 元素

如果有多个相同 ID 的元素,可以通过指定 drawingOrder 来指定要操作的元素。例如,假设有两个 ID 为 'myID' 的元素,但是它们的 drawingOrder 分别为 0 和 1,可以使用以下代码来操作 drawingOrder 为 1 的元素:

var myElement = document.querySelector('#myID[drawingOrder='1']');

这将返回 drawingOrder 为 1 的 ID 为 'myID' 的元素。

在安卓中使用无障碍点击

在安卓中,可以使用 AccessibilityService 来实现无障碍点击。具体步骤如下:

  1. 在 AndroidManifest.xml 文件中声明 AccessibilityService:
<service android:name=".MyAccessibilityService"
         android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
    <meta-data android:name="android.accessibilityservice"
               android:resource="@xml/accessibility_service_config" />
</service>
  1. 创建 AccessibilityService 类 MyAccessibilityService,并重写 onAccessibilityEvent 方法:
public class MyAccessibilityService extends AccessibilityService {

    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        // 获取事件类型和包名
        int eventType = event.getEventType();
        String packageName = String.valueOf(event.getPackageName());

        // 如果是点击事件,执行点击操作
        if (eventType == AccessibilityEvent.TYPE_VIEW_CLICKED) {
            performClick(event.getSource());
        }
    }

    @Override
    public void onInterrupt() {
    }

    // 执行点击操作
    private void performClick(AccessibilityNodeInfo nodeInfo) {
        if (nodeInfo != null) {
            nodeInfo.performAction(AccessibilityNodeInfo.ACTION_CLICK);
        }
    }
}
  1. 创建 accessibility_service_config.xml 文件,配置 AccessibilityService:
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:description="@string/accessibility_service_description"
    android:accessibilityEventTypes="typeViewClicked"
    android:accessibilityFeedbackType="feedbackGeneric"
    android:accessibilityFlags="flagDefault"
    android:canRetrieveWindowContent="true"
    android:canRequestFilterKeyEvents="true"
    android:settingsActivity=".MyAccessibilityServiceSettingsActivity" />
  1. 在 MyAccessibilityService 中实现 performGlobalAction 方法,用于执行全局操作:
@Override
public boolean performGlobalAction(int action) {
    switch (action) {
        case AccessibilityService.GLOBAL_ACTION_BACK:
            // 执行返回操作
            performBack();
            break;
        case AccessibilityService.GLOBAL_ACTION_HOME:
            // 执行返回主界面操作
            performHome();
            break;
        case AccessibilityService.GLOBAL_ACTION_RECENTS:
            // 打开最近使用的应用程序列表
            performRecentApps();
            break;
    }
    return true;
}

// 执行返回操作
private void performBack() {
    performGlobalAction(AccessibilityService.GLOBAL_ACTION_BACK);
}

// 执行返回主界面操作
private void performHome() {
    performGlobalAction(AccessibilityService.GLOBAL_ACTION_HOME);
}

// 打开最近使用的应用程序列表
private void performRecentApps() {
    performGlobalAction(AccessibilityService.GLOBAL_ACTION_RECENTS);
}
  1. 在应用程序中启动 AccessibilityService:
Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
startActivity(intent);

在 AccessibilityService 设置界面中,启用 MyAccessibilityService 即可使用无障碍点击功能。

使用 drawingOrder 属性选择相同 ID 元素 | 无障碍点击实现指南

原文地址: https://www.cveoy.top/t/topic/jusV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录