diff options
author | 2019-05-20 14:15:25 +0000 | |
---|---|---|
committer | 2019-05-20 14:15:25 +0000 | |
commit | 2f9ad0c42e599b0786a63d60c534bc1c2dac220a (patch) | |
tree | c3190a3c71a7985e9ba8ad1222ed4d7fc1939870 | |
parent | aedd21860a89481d812bbb8d3e8c70e469c5133f (diff) | |
parent | b66e982fa7b4f8ce1c47c414195d1bdd93c8bcb0 (diff) |
Merge "End transitions before starting new transition." into qt-dev
-rw-r--r-- | packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java index d0b2c58e8021..0bb9e744f2b6 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java @@ -3,6 +3,7 @@ package com.android.keyguard; import static com.android.systemui.util.InjectionInflationController.VIEW_CONTEXT; import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.app.WallpaperManager; import android.content.Context; @@ -412,15 +413,10 @@ public class KeyguardClockSwitch extends RelativeLayout { mClockTransition.setScale(smallFontSize / bigFontSize); mBoldClockTransition.setScale(bigFontSize / smallFontSize); - TransitionManager.beginDelayedTransition((ViewGroup) mClockView.getParent(), mTransition); - mClockView.setVisibility(hasHeader ? View.INVISIBLE : View.VISIBLE); - mClockViewBold.setVisibility(hasHeader ? View.VISIBLE : View.INVISIBLE); - int paddingBottom = mContext.getResources().getDimensionPixelSize(hasHeader - ? R.dimen.widget_vertical_padding_clock : R.dimen.title_clock_padding); - mClockView.setPadding(mClockView.getPaddingLeft(), mClockView.getPaddingTop(), - mClockView.getPaddingRight(), paddingBottom); - mClockViewBold.setPadding(mClockViewBold.getPaddingLeft(), mClockViewBold.getPaddingTop(), - mClockViewBold.getPaddingRight(), paddingBottom); + // End any current transitions before starting a new transition so that the new transition + // starts from a good state instead of a potentially bad intermediate state arrived at + // during a transition animation. + TransitionManager.endTransitions((ViewGroup) mClockView.getParent()); if (hasHeader) { // After the transition, make the default clock GONE so that it doesn't make the @@ -439,6 +435,16 @@ public class KeyguardClockSwitch extends RelativeLayout { } }); } + + TransitionManager.beginDelayedTransition((ViewGroup) mClockView.getParent(), mTransition); + mClockView.setVisibility(hasHeader ? View.INVISIBLE : View.VISIBLE); + mClockViewBold.setVisibility(hasHeader ? View.VISIBLE : View.INVISIBLE); + int paddingBottom = mContext.getResources().getDimensionPixelSize(hasHeader + ? R.dimen.widget_vertical_padding_clock : R.dimen.title_clock_padding); + mClockView.setPadding(mClockView.getPaddingLeft(), mClockView.getPaddingTop(), + mClockView.getPaddingRight(), paddingBottom); + mClockViewBold.setPadding(mClockViewBold.getPaddingLeft(), mClockViewBold.getPaddingTop(), + mClockViewBold.getPaddingRight(), paddingBottom); } @VisibleForTesting(otherwise = VisibleForTesting.NONE) @@ -553,7 +559,6 @@ public class KeyguardClockSwitch extends RelativeLayout { private Animator createAnimator(View view, float cutoff, int startVisibility, int endVisibility, float startScale, float endScale) { view.setPivotY(view.getHeight() - view.getPaddingBottom()); - view.setVisibility(startVisibility); ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f); animator.addUpdateListener(animation -> { final float fraction = animation.getAnimatedFraction(); @@ -564,6 +569,14 @@ public class KeyguardClockSwitch extends RelativeLayout { view.setScaleX(scale); view.setScaleY(scale); }); + animator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationStart(Animator animation) { + super.onAnimationStart(animation); + view.setVisibility(startVisibility); + animation.removeListener(this); + } + }); addListener(new TransitionListenerAdapter() { @Override public void onTransitionEnd(Transition transition) { |