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

Commit 3116918b authored by Lucas Dupin's avatar Lucas Dupin Committed by Android (Google) Code Review
Browse files

Merge "Only animate when the slice is actually animating" into pi-dev

parents f021d88c 3978e6e6
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -84,10 +84,9 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe
    private LiveData<Slice> mLiveData;
    private int mIconSize;
    /**
     * Listener called whenever the view contents change.
     * Boolean will be true when the change happens animated.
     * Runnable called whenever the view contents change.
     */
    private Consumer<Boolean> mContentChangeListener;
    private Runnable mContentChangeListener;
    private boolean mHasHeader;
    private Slice mSlice;
    private boolean mPulsing;
@@ -150,7 +149,9 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe
        if (mPulsing || mSlice == null) {
            mTitle.setVisibility(GONE);
            mRow.setVisibility(GONE);
            mContentChangeListener.accept(getLayoutTransition() != null);
            if (mContentChangeListener != null) {
                mContentChangeListener.run();
            }
            return;
        }

@@ -223,7 +224,7 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe
        }

        if (mContentChangeListener != null) {
            mContentChangeListener.accept(getLayoutTransition() != null);
            mContentChangeListener.run();
        }
    }

@@ -310,11 +311,10 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe
    }

    /**
     * Listener that gets invoked every time the title or the row visibility changes.
     * Parameter will be {@code true} whenever the change happens animated.
     * Runnable that gets invoked every time the title or the row visibility changes.
     * @param contentChangeListener The listener.
     */
    public void setContentChangeListener(Consumer<Boolean> contentChangeListener) {
    public void setContentChangeListener(Runnable contentChangeListener) {
        mContentChangeListener = contentChangeListener;
    }

+6 −6
Original line number Diff line number Diff line
@@ -76,7 +76,6 @@ public class KeyguardStatusView extends GridLayout implements
    private float mDarkAmount = 0;
    private int mTextColor;
    private float mWidgetPadding;
    private boolean mAnimateLayout;
    private int mLastLayoutHeight;

    private KeyguardUpdateMonitorCallback mInfoCallback = new KeyguardUpdateMonitorCallback() {
@@ -185,7 +184,7 @@ public class KeyguardStatusView extends GridLayout implements
        mClockView.addOnLayoutChangeListener(this);
        mClockSeparator.addOnLayoutChangeListener(this);
        mKeyguardSlice.setContentChangeListener(this::onSliceContentChanged);
        onSliceContentChanged(false /* animated */);
        onSliceContentChanged();

        boolean shouldMarquee = KeyguardUpdateMonitor.getInstance(mContext).isDeviceInteractive();
        setEnableMarquee(shouldMarquee);
@@ -199,8 +198,7 @@ public class KeyguardStatusView extends GridLayout implements
        mClockView.setElegantTextHeight(false);
    }

    private void onSliceContentChanged(boolean animated) {
        mAnimateLayout = animated;
    private void onSliceContentChanged() {
        boolean smallClock = mKeyguardSlice.hasHeader() || mPulsing;
        float clockScale = smallClock ? mSmallClockScale : 1;

@@ -228,10 +226,12 @@ public class KeyguardStatusView extends GridLayout implements
        long duration = KeyguardSliceView.DEFAULT_ANIM_DURATION;
        long delay = smallClock ? 0 : duration / 4;

        boolean shouldAnimate = mKeyguardSlice.getLayoutTransition() != null
                && mKeyguardSlice.getLayoutTransition().isRunning();
        if (view == mClockView) {
            float clockScale = smallClock ? mSmallClockScale : 1;
            Paint.Style style = smallClock ? Paint.Style.FILL_AND_STROKE : Paint.Style.FILL;
            if (mAnimateLayout) {
            if (shouldAnimate) {
                mClockView.setY(oldTop + heightOffset);
                mClockView.animate().cancel();
                mClockView.animate()
@@ -257,7 +257,7 @@ public class KeyguardStatusView extends GridLayout implements
        } else if (view == mClockSeparator) {
            boolean hasSeparator = hasHeader && !mPulsing;
            float alpha = hasSeparator ? 1 : 0;
            if (mAnimateLayout) {
            if (shouldAnimate) {
                boolean isAwake = mDarkAmount != 0;
                mClockSeparator.setY(oldTop + heightOffset);
                mClockSeparator.animate().cancel();
+3 −9
Original line number Diff line number Diff line
@@ -57,9 +57,7 @@ public class KeyguardSliceViewTest extends SysuiTestCase {
    public void showSlice_notifiesListener() {
        ListBuilder builder = new ListBuilder(getContext(), mSliceUri);
        AtomicBoolean notified = new AtomicBoolean();
        mKeyguardSliceView.setContentChangeListener((hasHeader)-> {
            notified.set(true);
        });
        mKeyguardSliceView.setContentChangeListener(()-> notified.set(true));
        mKeyguardSliceView.onChanged(builder.build());
        Assert.assertTrue("Listener should be notified about slice changes.",
                notified.get());
@@ -68,9 +66,7 @@ public class KeyguardSliceViewTest extends SysuiTestCase {
    @Test
    public void showSlice_emptySliceNotifiesListener() {
        AtomicBoolean notified = new AtomicBoolean();
        mKeyguardSliceView.setContentChangeListener((hasHeader)-> {
            notified.set(true);
        });
        mKeyguardSliceView.setContentChangeListener(()-> notified.set(true));
        mKeyguardSliceView.onChanged(null);
        Assert.assertTrue("Listener should be notified about slice changes.",
                notified.get());
@@ -92,9 +88,7 @@ public class KeyguardSliceViewTest extends SysuiTestCase {
    @Test
    public void refresh_replacesSliceContentAndNotifiesListener() {
        AtomicBoolean notified = new AtomicBoolean();
        mKeyguardSliceView.setContentChangeListener((hasHeader)-> {
            notified.set(true);
        });
        mKeyguardSliceView.setContentChangeListener(()-> notified.set(true));
        mKeyguardSliceView.refresh();
        Assert.assertTrue("Listener should be notified about slice changes.",
                notified.get());