Merge "End transitions before starting new transition." into qt-dev

This commit is contained in:
TreeHugger Robot
2019-05-20 14:15:25 +00:00
committed by Android (Google) Code Review

View File

@@ -3,6 +3,7 @@ package com.android.keyguard;
import static com.android.systemui.util.InjectionInflationController.VIEW_CONTEXT; import static com.android.systemui.util.InjectionInflationController.VIEW_CONTEXT;
import android.animation.Animator; import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator; import android.animation.ValueAnimator;
import android.app.WallpaperManager; import android.app.WallpaperManager;
import android.content.Context; import android.content.Context;
@@ -412,15 +413,10 @@ public class KeyguardClockSwitch extends RelativeLayout {
mClockTransition.setScale(smallFontSize / bigFontSize); mClockTransition.setScale(smallFontSize / bigFontSize);
mBoldClockTransition.setScale(bigFontSize / smallFontSize); mBoldClockTransition.setScale(bigFontSize / smallFontSize);
TransitionManager.beginDelayedTransition((ViewGroup) mClockView.getParent(), mTransition); // End any current transitions before starting a new transition so that the new transition
mClockView.setVisibility(hasHeader ? View.INVISIBLE : View.VISIBLE); // starts from a good state instead of a potentially bad intermediate state arrived at
mClockViewBold.setVisibility(hasHeader ? View.VISIBLE : View.INVISIBLE); // during a transition animation.
int paddingBottom = mContext.getResources().getDimensionPixelSize(hasHeader TransitionManager.endTransitions((ViewGroup) mClockView.getParent());
? 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);
if (hasHeader) { if (hasHeader) {
// After the transition, make the default clock GONE so that it doesn't make the // 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) @VisibleForTesting(otherwise = VisibleForTesting.NONE)
@@ -553,7 +559,6 @@ public class KeyguardClockSwitch extends RelativeLayout {
private Animator createAnimator(View view, float cutoff, int startVisibility, private Animator createAnimator(View view, float cutoff, int startVisibility,
int endVisibility, float startScale, float endScale) { int endVisibility, float startScale, float endScale) {
view.setPivotY(view.getHeight() - view.getPaddingBottom()); view.setPivotY(view.getHeight() - view.getPaddingBottom());
view.setVisibility(startVisibility);
ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f); ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f);
animator.addUpdateListener(animation -> { animator.addUpdateListener(animation -> {
final float fraction = animation.getAnimatedFraction(); final float fraction = animation.getAnimatedFraction();
@@ -564,6 +569,14 @@ public class KeyguardClockSwitch extends RelativeLayout {
view.setScaleX(scale); view.setScaleX(scale);
view.setScaleY(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() { addListener(new TransitionListenerAdapter() {
@Override @Override
public void onTransitionEnd(Transition transition) { public void onTransitionEnd(Transition transition) {