Animate Folder elevation halfway thru transition.

The current implementation had the Folder elevation animate in
after the Folder transition was done completing. To make it appear
more smooth, we animate the Folder elevation halfway thru the
transition.

We will keep the separate FolderIcon shadow fade-in animation on
the closing transition otherwise the shadow will be apparent in the
"preview."

Bug: 62787582
Bug: 35064148
Change-Id: Ifd3d84214b0600b6651005c8e65d90b0d8ade422
This commit is contained in:
Jon Miranda
2017-06-26 11:24:33 -07:00
parent cb73920b23
commit c7aa37d696

View File

@@ -201,20 +201,20 @@ public class FolderAnimationManager {
play(a, new RoundedRectRevealOutlineProvider(initialRadius, finalRadius, startRect,
endRect).createRevealAnimator(mFolder, !mIsOpening));
// Animate the elevation midway so that the shadow is not noticeable in the background.
int midDuration = mDuration / 2;
Animator z = getAnimator(mFolder, View.TRANSLATION_Z, -mFolder.getElevation(), 0);
play(a, z, midDuration, midDuration);
a.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
mFolder.setTranslationX(0.0f);
mFolder.setTranslationY(0.0f);
mFolder.setTranslationZ(0.0f);
mFolder.setScaleX(1f);
mFolder.setScaleY(1f);
if (mIsOpening) {
getAnimator(mFolder, View.TRANSLATION_Z, -mFolder.getElevation(), 0)
.setDuration(150)
.start();
}
}
});
@@ -323,7 +323,12 @@ public class FolderAnimationManager {
}
private void play(AnimatorSet as, Animator a) {
a.setDuration(mDuration);
play(as, a, a.getStartDelay(), mDuration);
}
private void play(AnimatorSet as, Animator a, long startDelay, int duration) {
a.setStartDelay(startDelay);
a.setDuration(duration);
as.play(a);
}