Merge "Fix dialog accessibility issues." into sc-v2-dev am: 65ce0da897

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16477357

Change-Id: I8725e95c208ca3409897f456f7274f3a992df10c
This commit is contained in:
TreeHugger Robot
2021-12-15 17:05:15 +00:00
committed by Automerger Merge Worker
2 changed files with 20 additions and 3 deletions

View File

@@ -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

View File

@@ -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()
}