diff options
| author | 2021-12-15 16:58:19 +0000 | |
|---|---|---|
| committer | 2021-12-15 16:58:19 +0000 | |
| commit | 65ce0da897d75b40e89205186db13b0a46fea297 (patch) | |
| tree | 2d98870c0158cb1706d4661144866e06a9fdb6e4 | |
| parent | e14bfadc0394a2a7f530d6d373f5954d97137dcd (diff) | |
| parent | 42c17888e8ad1bcedd5dde4a8555e5c88a80d9db (diff) | |
Merge "Fix dialog accessibility issues." into sc-v2-dev
2 files changed, 20 insertions, 3 deletions
diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/DialogLaunchAnimator.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/DialogLaunchAnimator.kt index 066e169dcde3..f7a7603944f6 100644 --- a/packages/SystemUI/animation/src/com/android/systemui/animation/DialogLaunchAnimator.kt +++ b/packages/SystemUI/animation/src/com/android/systemui/animation/DialogLaunchAnimator.kt @@ -299,6 +299,13 @@ private class AnimatedDialog( fullscreenTransparentBackground.setOnClickListener { dialog.dismiss() } dialogContentWithBackground.isClickable = true + // Make sure the transparent and dialog backgrounds are not focusable by accessibility + // features. + fullscreenTransparentBackground.importantForAccessibility = + View.IMPORTANT_FOR_ACCESSIBILITY_NO + dialogContentWithBackground.importantForAccessibility = + View.IMPORTANT_FOR_ACCESSIBILITY_NO + fullscreenTransparentBackground.addView( dialogContentWithBackground, FrameLayout.LayoutParams( @@ -342,8 +349,10 @@ private class AnimatedDialog( ?.color ?.defaultColor ?: Color.BLACK - // Make the background view invisible until we start the animation. - dialogContentWithBackground.visibility = View.INVISIBLE + // Make the background view invisible until we start the animation. We use the transition + // visibility like GhostView does so that we don't mess up with the accessibility tree (see + // b/204944038#comment17). + dialogContentWithBackground.setTransitionVisibility(View.INVISIBLE) // Make sure the dialog is visible instantly and does not do any window animation. window.attributes.windowAnimations = R.style.Animation_LaunchAnimation diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/GhostedViewLaunchAnimatorController.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/GhostedViewLaunchAnimatorController.kt index 3ccf5e4fbdd0..86cd357d061e 100644 --- a/packages/SystemUI/animation/src/com/android/systemui/animation/GhostedViewLaunchAnimatorController.kt +++ b/packages/SystemUI/animation/src/com/android/systemui/animation/GhostedViewLaunchAnimatorController.kt @@ -186,7 +186,11 @@ open class GhostedViewLaunchAnimatorController( // Making the ghost view invisible will make the ghosted view visible, so order is // important here. ghostView.visibility = View.INVISIBLE - ghostedView.visibility = View.INVISIBLE + + // Make the ghosted view invisible again. We use the transition visibility like + // GhostView does so that we don't mess up with the accessibility tree (see + // b/204944038#comment17). + ghostedView.setTransitionVisibility(View.INVISIBLE) backgroundView.visibility = View.INVISIBLE } return @@ -257,6 +261,10 @@ open class GhostedViewLaunchAnimatorController( GhostView.removeGhost(ghostedView) launchContainerOverlay.remove(backgroundView) + + // Make sure that the view is considered VISIBLE by accessibility by first making it + // INVISIBLE then VISIBLE (see b/204944038#comment17 for more info). + ghostedView.visibility = View.INVISIBLE ghostedView.visibility = View.VISIBLE ghostedView.invalidate() } |