Merge "Only calling finishedwhen all the animations have finished" into qt-qpr1-dev
This commit is contained in:
@@ -754,6 +754,16 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void onFinished(Callback callback) {
|
private void onFinished(Callback callback) {
|
||||||
|
if (!hasReachedFinalState(mScrimBehind)
|
||||||
|
|| !hasReachedFinalState(mScrimInFront)
|
||||||
|
|| !hasReachedFinalState(mScrimForBubble)) {
|
||||||
|
if (callback != null && callback != mCallback) {
|
||||||
|
// Since we only notify the callback that we're finished once everything has
|
||||||
|
// finished, we need to make sure that any changing callbacks are also invoked
|
||||||
|
callback.onFinished();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (mWakeLockHeld) {
|
if (mWakeLockHeld) {
|
||||||
mWakeLock.release(TAG);
|
mWakeLock.release(TAG);
|
||||||
mWakeLockHeld = false;
|
mWakeLockHeld = false;
|
||||||
@@ -773,9 +783,17 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo
|
|||||||
mInFrontTint = Color.TRANSPARENT;
|
mInFrontTint = Color.TRANSPARENT;
|
||||||
mBehindTint = Color.TRANSPARENT;
|
mBehindTint = Color.TRANSPARENT;
|
||||||
mBubbleTint = Color.TRANSPARENT;
|
mBubbleTint = Color.TRANSPARENT;
|
||||||
|
updateScrimColor(mScrimInFront, mInFrontAlpha, mInFrontTint);
|
||||||
|
updateScrimColor(mScrimBehind, mBehindAlpha, mBehindTint);
|
||||||
|
updateScrimColor(mScrimForBubble, mBubbleAlpha, mBubbleTint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean hasReachedFinalState(ScrimView scrim) {
|
||||||
|
return scrim.getViewAlpha() == getCurrentScrimAlpha(scrim)
|
||||||
|
&& scrim.getTint() == getCurrentScrimTint(scrim);
|
||||||
|
}
|
||||||
|
|
||||||
private boolean isAnimating(View scrim) {
|
private boolean isAnimating(View scrim) {
|
||||||
return scrim.getTag(TAG_KEY_ANIM) != null;
|
return scrim.getTag(TAG_KEY_ANIM) != null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -431,6 +431,7 @@ public class ScrimControllerTest extends SysuiTestCase {
|
|||||||
TRANSPARENT /* behind */,
|
TRANSPARENT /* behind */,
|
||||||
TRANSPARENT /* bubble */);
|
TRANSPARENT /* bubble */);
|
||||||
|
|
||||||
|
// Make sure at the very end of the animation, we're reset to transparent
|
||||||
assertScrimTint(false /* front */,
|
assertScrimTint(false /* front */,
|
||||||
false /* behind */,
|
false /* behind */,
|
||||||
false /* bubble */);
|
false /* bubble */);
|
||||||
|
|||||||
Reference in New Issue
Block a user