Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4e0f4d30 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "AOD/LS - Large clock animations"

parents eb197bf6 17a635e5
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -677,6 +677,8 @@
    <dimen name="keyguard_clock_top_margin">36dp</dimen>
    <!-- The margin between top of clock and bottom of lock icon. -->
    <dimen name="keyguard_clock_lock_margin">16dp</dimen>
    <!-- The amount to shift the clocks during a small/large transition -->
    <dimen name="keyguard_clock_switch_y_shift">10dp</dimen>

    <item name="scrim_behind_alpha" format="float" type="dimen">0.62</item>

+54 −22
Original line number Diff line number Diff line
package com.android.keyguard;

import android.animation.Animator;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.Paint;
@@ -48,6 +50,9 @@ public class KeyguardClockSwitch extends RelativeLayout {
     */
    private static final float TO_BOLD_TRANSITION_FRACTION = 0.7f;

    private static final long CLOCK_OUT_MILLIS = 150;
    private static final long CLOCK_IN_MILLIS = 200;

    /**
     * Layout transition that scales the default clock face.
     */
@@ -112,6 +117,7 @@ public class KeyguardClockSwitch extends RelativeLayout {
    private int[] mColorPalette;

    private int mLockScreenMode = KeyguardUpdateMonitor.LOCK_SCREEN_MODE_NORMAL;
    private int mClockSwitchYAmount;

    public KeyguardClockSwitch(Context context, AttributeSet attrs) {
        super(context, attrs);
@@ -130,6 +136,17 @@ public class KeyguardClockSwitch extends RelativeLayout {
                .setInterpolator(Interpolators.LINEAR_OUT_SLOW_IN);
    }

    /**
     * Apply dp changes on font/scale change
     */
    public void onDensityOrFontScaleChanged() {
        setTextSize(TypedValue.COMPLEX_UNIT_PX, mContext.getResources()
                .getDimensionPixelSize(R.dimen.widget_big_font_size));

        mClockSwitchYAmount = mContext.getResources().getDimensionPixelSize(
                R.dimen.keyguard_clock_switch_y_shift);
    }

    /**
     * Returns if this view is presenting a custom clock, or the default implementation.
     */
@@ -181,6 +198,8 @@ public class KeyguardClockSwitch extends RelativeLayout {
        mNewLockscreenLargeClockFrame = findViewById(R.id.new_lockscreen_clock_view_large);
        mSmallClockFrame = findViewById(R.id.clock_view);
        mKeyguardStatusArea = findViewById(R.id.keyguard_status_area);

        onDensityOrFontScaleChanged();
    }

    void setClockPlugin(ClockPlugin plugin, int statusBarState) {
@@ -296,31 +315,43 @@ public class KeyguardClockSwitch extends RelativeLayout {
        mClockViewBold.setFormat24Hour(format);
    }

    private void updateClockLayout(boolean useLargeClock) {
    private void animateClockChange(boolean useLargeClock) {
        if (mLockScreenMode != KeyguardUpdateMonitor.LOCK_SCREEN_MODE_LAYOUT_1) return;

        Fade fadeIn = new Fade();
        fadeIn.setDuration(KeyguardSliceView.DEFAULT_ANIM_DURATION);
        fadeIn.setInterpolator(Interpolators.LINEAR_OUT_SLOW_IN);

        Fade fadeOut = new Fade();
        fadeOut.setDuration(KeyguardSliceView.DEFAULT_ANIM_DURATION / 2);
        fadeOut.setInterpolator(Interpolators.FAST_OUT_LINEAR_IN);

        View in, out;
        int direction = 1;
        if (useLargeClock) {
            TransitionManager.beginDelayedTransition(mNewLockscreenClockFrame, fadeOut);
            TransitionManager.beginDelayedTransition(mNewLockscreenLargeClockFrame, fadeIn);

            mNewLockscreenClockFrame.setVisibility(View.INVISIBLE);
            addView(mNewLockscreenLargeClockFrame);
            mNewLockscreenLargeClockFrame.setVisibility(View.VISIBLE);
            out = mNewLockscreenClockFrame;
            in = mNewLockscreenLargeClockFrame;
            addView(in);
            direction = -1;
        } else {
            TransitionManager.beginDelayedTransition(mNewLockscreenClockFrame, fadeIn);
            TransitionManager.beginDelayedTransition(mNewLockscreenLargeClockFrame, fadeOut);
            in = mNewLockscreenClockFrame;
            out = mNewLockscreenLargeClockFrame;

            removeView(mNewLockscreenLargeClockFrame);
            mNewLockscreenClockFrame.setVisibility(View.VISIBLE);
            // Must remove in order for notifications to appear in the proper place
            removeView(out);
        }

        AnimatorSet outAnim = new AnimatorSet();
        outAnim.setDuration(CLOCK_OUT_MILLIS);
        outAnim.setInterpolator(Interpolators.FAST_OUT_LINEAR_IN);
        outAnim.playTogether(
                ObjectAnimator.ofFloat(out, View.ALPHA, 0f),
                ObjectAnimator.ofFloat(out, View.TRANSLATION_Y, 0,
                        direction * -mClockSwitchYAmount));

        in.setAlpha(0);
        in.setVisibility(View.VISIBLE);
        AnimatorSet inAnim = new AnimatorSet();
        inAnim.setDuration(CLOCK_IN_MILLIS);
        inAnim.setInterpolator(Interpolators.LINEAR_OUT_SLOW_IN);
        inAnim.playTogether(ObjectAnimator.ofFloat(in, View.ALPHA, 1f),
                ObjectAnimator.ofFloat(in, View.TRANSLATION_Y, direction * mClockSwitchYAmount, 0));
        inAnim.setStartDelay(CLOCK_OUT_MILLIS / 2);

        inAnim.start();
        outAnim.start();
    }

    /**
@@ -343,7 +374,8 @@ public class KeyguardClockSwitch extends RelativeLayout {
        if (hasVisibleNotifications == mHasVisibleNotifications) {
            return;
        }
        updateClockLayout(!hasVisibleNotifications);

        animateClockChange(!hasVisibleNotifications);

        mHasVisibleNotifications = hasVisibleNotifications;
        if (mDarkAmount == 0f && mBigClockContainer != null) {
+2 −4
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import android.content.ContentResolver;
import android.content.res.Resources;
import android.provider.Settings;
import android.text.format.DateFormat;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
@@ -146,11 +145,10 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
    }

    /**
     * Updates clock's text
     * Apply dp changes on font/scale change
     */
    public void onDensityOrFontScaleChanged() {
        mView.setTextSize(TypedValue.COMPLEX_UNIT_PX,
                mResources.getDimensionPixelSize(R.dimen.widget_big_font_size));
        mView.onDensityOrFontScaleChanged();
    }

    /**