mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-02-08 09:12:05 +08:00
This is an early release and there are several things that are known not to work if you're porting your iOS app to Android. See the Known Issues guide on the website. We will work with the community to reach platform parity with iOS.
104 lines
3.6 KiB
Java
104 lines
3.6 KiB
Java
/**
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
|
|
package com.facebook.react.uimanager;
|
|
|
|
import android.view.View;
|
|
import android.view.accessibility.AccessibilityEvent;
|
|
import android.view.accessibility.AccessibilityNodeInfo;
|
|
import android.widget.Button;
|
|
import android.widget.RadioButton;
|
|
|
|
/**
|
|
* Helper class containing logic for setting accessibility View properties.
|
|
*/
|
|
/* package */ class AccessibilityHelper {
|
|
|
|
private static final String BUTTON = "button";
|
|
private static final String RADIOBUTTON_CHECKED = "radiobutton_checked";
|
|
private static final String RADIOBUTTON_UNCHECKED = "radiobutton_unchecked";
|
|
|
|
private static final View.AccessibilityDelegate BUTTON_DELEGATE =
|
|
new View.AccessibilityDelegate() {
|
|
@Override
|
|
public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event) {
|
|
super.onInitializeAccessibilityEvent(host, event);
|
|
event.setClassName(Button.class.getName());
|
|
}
|
|
|
|
@Override
|
|
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
|
|
super.onInitializeAccessibilityNodeInfo(host, info);
|
|
info.setClassName(Button.class.getName());
|
|
}
|
|
};
|
|
|
|
private static final View.AccessibilityDelegate RADIOBUTTON_CHECKED_DELEGATE =
|
|
new View.AccessibilityDelegate() {
|
|
@Override
|
|
public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event) {
|
|
super.onInitializeAccessibilityEvent(host, event);
|
|
event.setClassName(RadioButton.class.getName());
|
|
event.setChecked(true);
|
|
}
|
|
|
|
@Override
|
|
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
|
|
super.onInitializeAccessibilityNodeInfo(host, info);
|
|
info.setClassName(RadioButton.class.getName());
|
|
info.setCheckable(true);
|
|
info.setChecked(true);
|
|
}
|
|
};
|
|
|
|
private static final View.AccessibilityDelegate RADIOBUTTON_UNCHECKED_DELEGATE =
|
|
new View.AccessibilityDelegate() {
|
|
@Override
|
|
public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event) {
|
|
super.onInitializeAccessibilityEvent(host, event);
|
|
event.setClassName(RadioButton.class.getName());
|
|
event.setChecked(false);
|
|
}
|
|
|
|
@Override
|
|
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
|
|
super.onInitializeAccessibilityNodeInfo(host, info);
|
|
info.setClassName(RadioButton.class.getName());
|
|
info.setCheckable(true);
|
|
info.setChecked(false);
|
|
}
|
|
};
|
|
|
|
public static void updateAccessibilityComponentType(View view, String componentType) {
|
|
if (componentType == null) {
|
|
view.setAccessibilityDelegate(null);
|
|
return;
|
|
}
|
|
switch (componentType) {
|
|
case BUTTON:
|
|
view.setAccessibilityDelegate(BUTTON_DELEGATE);
|
|
break;
|
|
case RADIOBUTTON_CHECKED:
|
|
view.setAccessibilityDelegate(RADIOBUTTON_CHECKED_DELEGATE);
|
|
break;
|
|
case RADIOBUTTON_UNCHECKED:
|
|
view.setAccessibilityDelegate(RADIOBUTTON_UNCHECKED_DELEGATE);
|
|
break;
|
|
default:
|
|
view.setAccessibilityDelegate(null);
|
|
break;
|
|
}
|
|
}
|
|
|
|
public static void sendAccessibilityEvent(View view, int eventType) {
|
|
view.sendAccessibilityEvent(eventType);
|
|
}
|
|
|
|
}
|