Fix issues with TrustDrawable
Ensures that the drawable is invalidated whenever the state changes. Also moves the mAnimating check such that we never update state when the animation is stopped. Bug: 17915865 Change-Id: I299597e08d4bac9a5551686cd5d987138e4b3c47
This commit is contained in:
@@ -133,6 +133,7 @@ public class TrustDrawable extends Drawable {
|
||||
if (!mAnimating) {
|
||||
mAnimating = true;
|
||||
updateState(true);
|
||||
invalidateSelf();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -146,18 +147,21 @@ public class TrustDrawable extends Drawable {
|
||||
mState = STATE_UNSET;
|
||||
mCurAlpha = 0;
|
||||
mCurInnerRadius = mInnerRadiusEnter;
|
||||
invalidateSelf();
|
||||
}
|
||||
}
|
||||
|
||||
public void setTrustManaged(boolean trustManaged) {
|
||||
if (trustManaged == mTrustManaged && mState != STATE_UNSET) return;
|
||||
mTrustManaged = trustManaged;
|
||||
if (mAnimating) {
|
||||
updateState(true);
|
||||
}
|
||||
updateState(true);
|
||||
}
|
||||
|
||||
private void updateState(boolean animate) {
|
||||
private void updateState(boolean allowTransientState) {
|
||||
if (!mAnimating) {
|
||||
return;
|
||||
}
|
||||
|
||||
int nextState = mState;
|
||||
if (mState == STATE_UNSET) {
|
||||
nextState = mTrustManaged ? STATE_ENTERING : STATE_GONE;
|
||||
@@ -170,7 +174,7 @@ public class TrustDrawable extends Drawable {
|
||||
} else if (mState == STATE_EXITING) {
|
||||
if (mTrustManaged) nextState = STATE_ENTERING;
|
||||
}
|
||||
if (!animate) {
|
||||
if (!allowTransientState) {
|
||||
if (nextState == STATE_ENTERING) nextState = STATE_VISIBLE;
|
||||
if (nextState == STATE_EXITING) nextState = STATE_GONE;
|
||||
}
|
||||
@@ -200,9 +204,8 @@ public class TrustDrawable extends Drawable {
|
||||
mState = nextState;
|
||||
if (mCurAnimator != null) {
|
||||
mCurAnimator.start();
|
||||
} else {
|
||||
invalidateSelf();
|
||||
}
|
||||
invalidateSelf();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user