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

Commit 0ad5750e authored by Miranda Kephart's avatar Miranda Kephart
Browse files

Fade out minimized view before animating expanded view

Currently, we essentially replace the minimized view in-place,
setting one view to GONE and the other to VISIBLE instantaneously.
This looks jarring; add an animation to quickly fade out the old
minimized view before running the normal entrance animation on the
expanded view.

Bug: 260707686
Test: manual (visual change)
Change-Id: Ib4213a3927533b2ed35f79823f798c2485cce28e
parent 99dc404b
Loading
Loading
Loading
Loading
+14 −3
Original line number Diff line number Diff line
@@ -346,10 +346,21 @@ public class ClipboardOverlayController implements ClipboardListener.ClipboardOv
    }

    private void animateFromMinimized() {
        if (mEnterAnimator != null && mEnterAnimator.isRunning()) {
            mEnterAnimator.cancel();
        }
        mEnterAnimator = mView.getMinimizedFadeoutAnimation();
        mEnterAnimator.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                super.onAnimationEnd(animation);
                mIsMinimized = false;
                setExpandedView();
                animateIn();
            }
        });
        mEnterAnimator.start();
    }

    private String getAccessibilityAnnouncement(ClipboardModel.Type type) {
        if (type == ClipboardModel.Type.TEXT) {
+15 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.animation.TimeInterpolator;
import android.animation.ValueAnimator;
import android.annotation.Nullable;
@@ -286,6 +287,20 @@ public class ClipboardOverlayView extends DraggableConstraintLayout {
        mActionChips.clear();
    }

    Animator getMinimizedFadeoutAnimation() {
        ObjectAnimator anim = ObjectAnimator.ofFloat(mMinimizedPreview, "alpha", 1, 0);
        anim.setDuration(66);
        anim.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                super.onAnimationEnd(animation);
                mMinimizedPreview.setVisibility(View.GONE);
                mMinimizedPreview.setAlpha(1);
            }
        });
        return anim;
    }

    Animator getEnterAnimation() {
        if (mAccessibilityManager.isEnabled()) {
            mDismissButton.setVisibility(View.VISIBLE);
+8 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.app.RemoteAction;
import android.content.ClipData;
import android.content.ClipDescription;
@@ -101,6 +102,9 @@ public class ClipboardOverlayControllerTest extends SysuiTestCase {
    private ArgumentCaptor<ClipboardOverlayView.ClipboardOverlayCallbacks> mOverlayCallbacksCaptor;
    private ClipboardOverlayView.ClipboardOverlayCallbacks mCallbacks;

    @Captor
    private ArgumentCaptor<AnimatorListenerAdapter> mAnimatorArgumentCaptor;

    private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock());

    @Before
@@ -478,12 +482,16 @@ public class ClipboardOverlayControllerTest extends SysuiTestCase {
        when(mClipboardOverlayWindow.getWindowInsets()).thenReturn(
                getImeInsets(new Rect(0, 0, 0, 1)));
        mOverlayController.setClipData(mSampleClipData, "");
        Animator mockFadeoutAnimator = Mockito.mock(Animator.class);
        when(mClipboardOverlayView.getMinimizedFadeoutAnimation()).thenReturn(mockFadeoutAnimator);

        verify(mClipboardOverlayView).setMinimized(true);
        verify(mClipboardOverlayView, never()).setMinimized(false);
        verify(mClipboardOverlayView, never()).showTextPreview(any(), anyBoolean());

        mCallbacks.onMinimizedViewTapped();
        verify(mockFadeoutAnimator).addListener(mAnimatorArgumentCaptor.capture());
        mAnimatorArgumentCaptor.getValue().onAnimationEnd(mockFadeoutAnimator);

        verify(mClipboardOverlayView).setMinimized(false);
        verify(mClipboardOverlayView).showTextPreview("Test Item", false);