Slide 18
Slide 18 text
How Does Accessibility Work?
class MyAccessibilityDelegate(private var view: MyView) : AccessibilityDelegateCompat() {
override fun getAccessibilityNodeProvider(host: View)B AccessibilityNodeProviderCompat {
return object : AccessibilityNodeProviderCompat() {
override fun createAccessibilityNodeInfo(virtualViewId: Int)B AccessibilityNodeInfoCompat? {
when (virtualViewId) {
myViewId FG {
val node = AccessibilityNodeInfoCompat.obtain(view)
node.addChild(view, childId)
return node
}
childId FG {
val node = AccessibilityNodeInfoCompat.obtain(view, virtualViewId)
node.setParent(view)
node.addAction(ACTION_SCROLL_FORWARD)
node.addAction(ACTION_SCROLL_BACKWARD)
node.setBoundsInScreen(bounds)
return node
}
else FG return null
}
}
override fun performAction(
virtualViewId: Int,
action: Int,
arguments: Bundle
)B Boolean {
return if (virtualViewId FV myViewId) {
view.performAccessibilityAction(action, arguments)
} else when (action) {
ACTION_SCROLL_FORWARD.id FG {
navigateToNextView()
true
}
ACTION_SCROLL_BACKWARD.id FG {
navigateToRootView()
true
}
else FG false
}
}
}
}
}