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

Commit ff9c0ecb authored by Matt Pietal's avatar Matt Pietal Committed by Automerger Merge Worker
Browse files

Merge "Smartspace - Animate vertically with clock change" into sc-dev am: d8ee5fbd

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14519489

Change-Id: I23e5215f25259855c051d906b3f59b9adb5d7b72
parents 4fceb22e d8ee5fbd
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -131,6 +131,11 @@ public class AnimatableClockController extends ViewController<AnimatableClockVie
        mKeyguardUpdateMonitor.removeCallback(mKeyguardUpdateMonitorCallback);
        mKeyguardUpdateMonitor.removeCallback(mKeyguardUpdateMonitorCallback);
    }
    }


    /** Animate the clock appearance */
    public void animateAppear() {
        mView.animateAppear();
    }

    /**
    /**
     * Updates the time for the view.
     * Updates the time for the view.
     */
     */
+25 −0
Original line number Original line Diff line number Diff line
@@ -44,6 +44,7 @@ public class AnimatableClockView extends TextView {
    private static final CharSequence SINGLE_LINE_FORMAT_12_HOUR = "h:mm";
    private static final CharSequence SINGLE_LINE_FORMAT_12_HOUR = "h:mm";
    private static final CharSequence SINGLE_LINE_FORMAT_24_HOUR = "HH:mm";
    private static final CharSequence SINGLE_LINE_FORMAT_24_HOUR = "HH:mm";
    private static final long DOZE_ANIM_DURATION = 300;
    private static final long DOZE_ANIM_DURATION = 300;
    private static final long APPEAR_ANIM_DURATION = 350;
    private static final long CHARGE_ANIM_DURATION_PHASE_0 = 500;
    private static final long CHARGE_ANIM_DURATION_PHASE_0 = 500;
    private static final long CHARGE_ANIM_DURATION_PHASE_1 = 1000;
    private static final long CHARGE_ANIM_DURATION_PHASE_1 = 1000;


@@ -156,6 +157,30 @@ public class AnimatableClockView extends TextView {
        mLockScreenColor = lockScreenColor;
        mLockScreenColor = lockScreenColor;
    }
    }


    void animateAppear() {
        if (mTextAnimator == null) {
            return;
        }

        setTextStyle(
                mDozingWeight,
                -1 /* text size, no update */,
                mLockScreenColor,
                false /* animate */,
                0 /* duration */,
                0 /* delay */,
                null /* onAnimationEnd */);

        setTextStyle(
                mLockScreenWeight,
                -1 /* text size, no update */,
                mLockScreenColor,
                true, /* animate */
                APPEAR_ANIM_DURATION,
                0 /* delay */,
                null /* onAnimationEnd */);
    }

    void animateDisappear() {
    void animateDisappear() {
        if (mTextAnimator == null) {
        if (mTextAnimator == null) {
            return;
            return;
+34 −4
Original line number Original line Diff line number Diff line
@@ -35,6 +35,7 @@ public class KeyguardClockSwitch extends RelativeLayout {


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


    /**
    /**
     * Optional/alternative clock injected via plugin.
     * Optional/alternative clock injected via plugin.
@@ -54,6 +55,8 @@ public class KeyguardClockSwitch extends RelativeLayout {
     * show it below the alternate clock.
     * show it below the alternate clock.
     */
     */
    private View mKeyguardStatusArea;
    private View mKeyguardStatusArea;
    /** Mutually exclusive with mKeyguardStatusArea */
    private View mSmartspaceView;


    /**
    /**
     * Maintain state so that a newly connected plugin can be initialized.
     * Maintain state so that a newly connected plugin can be initialized.
@@ -67,6 +70,7 @@ public class KeyguardClockSwitch extends RelativeLayout {


    private AnimatorSet mClockInAnim = null;
    private AnimatorSet mClockInAnim = null;
    private AnimatorSet mClockOutAnim = null;
    private AnimatorSet mClockOutAnim = null;
    private ObjectAnimator mSmartspaceAnim = null;


    /**
    /**
     * If the Keyguard Slice has a header (big center-aligned text.)
     * If the Keyguard Slice has a header (big center-aligned text.)
@@ -177,17 +181,22 @@ public class KeyguardClockSwitch extends RelativeLayout {
    private void animateClockChange(boolean useLargeClock) {
    private void animateClockChange(boolean useLargeClock) {
        if (mClockInAnim != null) mClockInAnim.cancel();
        if (mClockInAnim != null) mClockInAnim.cancel();
        if (mClockOutAnim != null) mClockOutAnim.cancel();
        if (mClockOutAnim != null) mClockOutAnim.cancel();
        if (mSmartspaceAnim != null) mSmartspaceAnim.cancel();


        View in, out;
        View in, out;
        int direction = 1;
        int direction = 1;
        float smartspaceYTranslation;
        if (useLargeClock) {
        if (useLargeClock) {
            out = mClockFrame;
            out = mClockFrame;
            in = mLargeClockFrame;
            in = mLargeClockFrame;
            if (indexOfChild(in) == -1) addView(in);
            if (indexOfChild(in) == -1) addView(in);
            direction = -1;
            direction = -1;
            smartspaceYTranslation = mSmartspaceView == null ? 0
                    : mClockFrame.getY() - mSmartspaceView.getY();
        } else {
        } else {
            in = mClockFrame;
            in = mClockFrame;
            out = mLargeClockFrame;
            out = mLargeClockFrame;
            smartspaceYTranslation = 0f;


            // Must remove in order for notifications to appear in the proper place
            // Must remove in order for notifications to appear in the proper place
            removeView(out);
            removeView(out);
@@ -222,6 +231,19 @@ public class KeyguardClockSwitch extends RelativeLayout {


        mClockInAnim.start();
        mClockInAnim.start();
        mClockOutAnim.start();
        mClockOutAnim.start();

        if (mSmartspaceView != null) {
            mSmartspaceAnim = ObjectAnimator.ofFloat(mSmartspaceView, View.TRANSLATION_Y,
                    smartspaceYTranslation);
            mSmartspaceAnim.setDuration(SMARTSPACE_MOVE_MILLIS);
            mSmartspaceAnim.setInterpolator(Interpolators.FAST_OUT_SLOW_IN);
            mSmartspaceAnim.addListener(new AnimatorListenerAdapter() {
                public void onAnimationEnd(Animator animation) {
                    mSmartspaceAnim = null;
                }
            });
            mSmartspaceAnim.start();
        }
    }
    }


    /**
    /**
@@ -237,15 +259,18 @@ public class KeyguardClockSwitch extends RelativeLayout {
    }
    }


    /**
    /**
     * Set whether or not the lock screen is showing notifications.
     * Based upon whether notifications are showing or not, display/hide the large clock and
     * the smaller version.
     */
     */
    void setHasVisibleNotifications(boolean hasVisibleNotifications) {
    boolean willSwitchToLargeClock(boolean hasVisibleNotifications) {
        if (hasVisibleNotifications == mHasVisibleNotifications) {
        if (hasVisibleNotifications == mHasVisibleNotifications) {
            return;
            return false;
        }
        }
        animateClockChange(!hasVisibleNotifications);
        boolean useLargeClock = !hasVisibleNotifications;
        animateClockChange(useLargeClock);


        mHasVisibleNotifications = hasVisibleNotifications;
        mHasVisibleNotifications = hasVisibleNotifications;
        return useLargeClock;
    }
    }


    public Paint getPaint() {
    public Paint getPaint() {
@@ -303,6 +328,10 @@ public class KeyguardClockSwitch extends RelativeLayout {
        }
        }
    }
    }


    void setSmartspaceView(View smartspaceView) {
        mSmartspaceView = smartspaceView;
    }

    void updateColors(ColorExtractor.GradientColors colors) {
    void updateColors(ColorExtractor.GradientColors colors) {
        mSupportsDarkText = colors.supportsDarkText();
        mSupportsDarkText = colors.supportsDarkText();
        mColorPalette = colors.getColorPalette();
        mColorPalette = colors.getColorPalette();
@@ -317,6 +346,7 @@ public class KeyguardClockSwitch extends RelativeLayout {
        pw.println("  mClockFrame: " + mClockFrame);
        pw.println("  mClockFrame: " + mClockFrame);
        pw.println("  mLargeClockFrame: " + mLargeClockFrame);
        pw.println("  mLargeClockFrame: " + mLargeClockFrame);
        pw.println("  mKeyguardStatusArea: " + mKeyguardStatusArea);
        pw.println("  mKeyguardStatusArea: " + mKeyguardStatusArea);
        pw.println("  mSmartspaceView: " + mSmartspaceView);
        pw.println("  mDarkAmount: " + mDarkAmount);
        pw.println("  mDarkAmount: " + mDarkAmount);
        pw.println("  mSupportsDarkText: " + mSupportsDarkText);
        pw.println("  mSupportsDarkText: " + mSupportsDarkText);
        pw.println("  mColorPalette: " + Arrays.toString(mColorPalette));
        pw.println("  mColorPalette: " + Arrays.toString(mColorPalette));
+5 −1
Original line number Original line Diff line number Diff line
@@ -185,6 +185,8 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
            lp = (RelativeLayout.LayoutParams) nic.getLayoutParams();
            lp = (RelativeLayout.LayoutParams) nic.getLayoutParams();
            lp.addRule(RelativeLayout.BELOW, mSmartspaceView.getId());
            lp.addRule(RelativeLayout.BELOW, mSmartspaceView.getId());
            nic.setLayoutParams(lp);
            nic.setLayoutParams(lp);

            mView.setSmartspaceView(mSmartspaceView);
        }
        }
    }
    }


@@ -220,7 +222,9 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
     * Set whether or not the lock screen is showing notifications.
     * Set whether or not the lock screen is showing notifications.
     */
     */
    public void setHasVisibleNotifications(boolean hasVisibleNotifications) {
    public void setHasVisibleNotifications(boolean hasVisibleNotifications) {
        mView.setHasVisibleNotifications(hasVisibleNotifications);
        if (mView.willSwitchToLargeClock(hasVisibleNotifications)) {
            mLargeClockViewController.animateAppear();
        }
    }
    }


    /**
    /**