Send subtree changed AccessibilityEvent for all alpha changes.
Changes to view.mtransformationInfo.mAlpha outside of View.java weren't triggering subtree AccessibilityEvents. This is a problem, because that property helps determine a views visibility in accessibility, and AccessibilityServices wouldn't be informed of this change in visibility. This results in UIs with certain animations not being accessible at all. This seems like an oversight to begin with, so it's a pretty low risk change. Test: Tested the reported instance of this bug in Permission Manager, CTSAccessibility* Change-Id: I02526e5659cf95f1373811008e74954a73addd21 Fix: 127589394
This commit is contained in:
committed by
Qasid Sadiq
parent
4f09b09f62
commit
6205820579
@@ -213,7 +213,7 @@ public class RenderNodeAnimator extends Animator {
|
||||
// it with the final value here.
|
||||
if (mRenderProperty == RenderNodeAnimator.ALPHA) {
|
||||
mViewTarget.ensureTransformationInfo();
|
||||
mViewTarget.mTransformationInfo.mAlpha = mFinalValue;
|
||||
mViewTarget.setAlphaInternal(mFinalValue);
|
||||
}
|
||||
|
||||
moveToRunningState();
|
||||
|
||||
@@ -4123,7 +4123,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
* completely transparent and 1 means completely opaque.
|
||||
*/
|
||||
@ViewDebug.ExportedProperty
|
||||
float mAlpha = 1f;
|
||||
private float mAlpha = 1f;
|
||||
|
||||
/**
|
||||
* The opacity of the view as manipulated by the Fade transition. This is a
|
||||
@@ -16190,7 +16190,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
return false;
|
||||
}
|
||||
|
||||
private void setAlphaInternal(float alpha) {
|
||||
void setAlphaInternal(float alpha) {
|
||||
float oldAlpha = mTransformationInfo.mAlpha;
|
||||
mTransformationInfo.mAlpha = alpha;
|
||||
// Report visibility changes, which can affect children, to accessibility
|
||||
|
||||
@@ -972,7 +972,6 @@ public class ViewPropertyAnimator {
|
||||
* @param value The value to set the property to
|
||||
*/
|
||||
private void setValue(int propertyConstant, float value) {
|
||||
final View.TransformationInfo info = mView.mTransformationInfo;
|
||||
final RenderNode renderNode = mView.mRenderNode;
|
||||
switch (propertyConstant) {
|
||||
case TRANSLATION_X:
|
||||
@@ -1009,7 +1008,7 @@ public class ViewPropertyAnimator {
|
||||
renderNode.setTranslationZ(value - renderNode.getElevation());
|
||||
break;
|
||||
case ALPHA:
|
||||
info.mAlpha = value;
|
||||
mView.setAlphaInternal(value);
|
||||
renderNode.setAlpha(value);
|
||||
break;
|
||||
}
|
||||
@@ -1047,7 +1046,7 @@ public class ViewPropertyAnimator {
|
||||
case Z:
|
||||
return node.getElevation() + node.getTranslationZ();
|
||||
case ALPHA:
|
||||
return mView.mTransformationInfo.mAlpha;
|
||||
return mView.getAlpha();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user