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
This commit is contained in:
@@ -346,9 +346,20 @@ public class ClipboardOverlayController implements ClipboardListener.ClipboardOv
|
||||
}
|
||||
|
||||
private void animateFromMinimized() {
|
||||
mIsMinimized = false;
|
||||
setExpandedView();
|
||||
animateIn();
|
||||
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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user