summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2019-05-20 14:15:25 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-05-20 14:15:25 +0000
commit2f9ad0c42e599b0786a63d60c534bc1c2dac220a (patch)
treec3190a3c71a7985e9ba8ad1222ed4d7fc1939870
parentaedd21860a89481d812bbb8d3e8c70e469c5133f (diff)
parentb66e982fa7b4f8ce1c47c414195d1bdd93c8bcb0 (diff)
Merge "End transitions before starting new transition." into qt-dev
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java33
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) {