Fade back button in and out tied with the overview/shelf (2/3)

Back button changes opacity when moving the shelf during swipe up
between home screen and overview. The alpha changes depending on the
progress of the swipe up animation. When going from app to home and vice
versa, the fade animation does not tie with the swipe up progress. The
fade animation also masks the back button drawable when ime visibility
changes.

Change-Id: I51e42930640ba711e81880b385bb722d7ee8ad33
Fixes: 74581837
Fixes: 76900236
Test: swipe up from home screen to overview
This commit is contained in:
Matthew Ng
2018-05-09 11:40:44 -07:00
parent 48059dc706
commit 8b92fe336b
6 changed files with 54 additions and 16 deletions

View File

@@ -42,6 +42,7 @@ import com.android.launcher3.Utilities;
import com.android.launcher3.anim.AnimationSuccessListener;
import com.android.launcher3.anim.AnimatorPlaybackController;
import com.android.launcher3.anim.AnimatorSetBuilder;
import com.android.launcher3.uioverrides.UiFactory;
import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Direction;
import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Touch;
import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType;
@@ -221,6 +222,8 @@ public abstract class AbstractStateChangeTouchController
cancelAtomicComponentsController();
}
mProgressMultiplier = initCurrentAnimation(animComponents);
mCurrentAnimation.getAnimationPlayer().addUpdateListener(animation ->
setBackButtonAlphaWithProgress((float) animation.getAnimatedValue()));
mCurrentAnimation.dispatchOnStart();
return true;
}
@@ -279,6 +282,7 @@ public abstract class AbstractStateChangeTouchController
mAtomicComponentsController.setPlayFraction(fraction - mAtomicComponentsStartProgress);
}
maybeUpdateAtomicAnim(mFromState, mToState, fraction);
setBackButtonAlphaWithProgress(fraction);
}
/**
@@ -471,6 +475,14 @@ public abstract class AbstractStateChangeTouchController
}
}
private void setBackButtonAlphaWithProgress(float progress) {
if (mFromState.hideBackButton ^ mToState.hideBackButton) {
progress = Utilities.boundToRange(progress, 0, 1);
final float alpha = mToState.hideBackButton ? 1 - progress : progress;
UiFactory.setBackButtonAlpha(mLauncher, alpha, false /* animate */);
}
}
private void logReachedState(int logAction) {
// Transition complete. log the action
mLauncher.getUserEventDispatcher().logStateChangeAction(logAction,