diff options
author | Tony Wickham <twickham@google.com> | 2018-05-16 12:23:12 -0700 |
---|---|---|
committer | Tony Wickham <twickham@google.com> | 2018-05-16 15:59:31 -0700 |
commit | b2ddf10041c80d26012469dfd3bb1b259da1bd94 (patch) | |
tree | 3777af607adcb610bf08c822ec5805afbae93b83 /src/com/android/launcher3/WorkspaceStateTransitionAnimation.java | |
parent | 07b8b0b1f091ef7de2a8b706f90f503298932658 (diff) | |
download | android_packages_apps_Trebuchet-b2ddf10041c80d26012469dfd3bb1b259da1bd94.tar.gz android_packages_apps_Trebuchet-b2ddf10041c80d26012469dfd3bb1b259da1bd94.tar.bz2 android_packages_apps_Trebuchet-b2ddf10041c80d26012469dfd3bb1b259da1bd94.zip |
Update interpolators and durations for state animations
When we enter overview (overview appears, workspace disappears):
- Workspace scales down from 1f to .8f with OvershootInterpolator(1.2f) at 200 ms
- Workspace fades from 1f to 0 with OvershootInterpolator(1.2f) at 200 ms
- Overview scales down from 1.33f to 1f with OvershootInterpolator(1.2f) at 200 ms
- Overview fades from 0 to 1f with OvershootInterpolator(1.2f) at 200 ms
When we exit overview (overview disappears, workspace appears):
- Workspace scales up from .92f to .1f with DecelerateInterpolator() at 200 ms
- Workspace fades from 0 to 1f with AccelerateInterpolator() at 200 ms
- Overview scales up from 1f to 1.1f with AccelerateInterpolator() at 180ms
- Overview fades from 1f to 0 with DecelerateInterpolator(1.7f) at 200 ms
Parallax while the finger moves: Workspace translates half the distance as the shelf
Bug: 79776746
Change-Id: I319d982cf202bcd6dbbcd68ffc5c0c7853629c7e
Diffstat (limited to 'src/com/android/launcher3/WorkspaceStateTransitionAnimation.java')
-rw-r--r-- | src/com/android/launcher3/WorkspaceStateTransitionAnimation.java | 45 |
1 files changed, 25 insertions, 20 deletions
diff --git a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java index 9f26e4a78..e734e7053 100644 --- a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java +++ b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java @@ -20,6 +20,10 @@ import static com.android.launcher3.LauncherAnimUtils.DRAWABLE_ALPHA; import static com.android.launcher3.LauncherAnimUtils.SCALE_PROPERTY; import static com.android.launcher3.LauncherState.HOTSEAT_ICONS; import static com.android.launcher3.LauncherState.HOTSEAT_SEARCH_BOX; +import static com.android.launcher3.anim.AnimatorSetBuilder.ANIM_WORKSPACE_FADE; +import static com.android.launcher3.anim.AnimatorSetBuilder.ANIM_WORKSPACE_SCALE; +import static com.android.launcher3.anim.Interpolators.LINEAR; +import static com.android.launcher3.anim.Interpolators.ZOOM_OUT; import static com.android.launcher3.anim.PropertySetter.NO_ANIM_PROPERTY_SETTER; import static com.android.launcher3.graphics.WorkspaceAndHotseatScrim.SCRIM_PROGRESS; import static com.android.launcher3.graphics.WorkspaceAndHotseatScrim.SYSUI_PROGRESS; @@ -30,7 +34,6 @@ import android.view.animation.Interpolator; import com.android.launcher3.LauncherState.PageAlphaProvider; import com.android.launcher3.LauncherStateManager.AnimationConfig; import com.android.launcher3.anim.AnimatorSetBuilder; -import com.android.launcher3.anim.Interpolators; import com.android.launcher3.anim.PropertySetter; import com.android.launcher3.graphics.WorkspaceAndHotseatScrim; @@ -50,12 +53,13 @@ public class WorkspaceStateTransitionAnimation { } public void setState(LauncherState toState) { - setWorkspaceProperty(toState, NO_ANIM_PROPERTY_SETTER, new AnimationConfig()); + setWorkspaceProperty(toState, NO_ANIM_PROPERTY_SETTER, new AnimatorSetBuilder(), + new AnimationConfig()); } public void setStateWithAnimation(LauncherState toState, AnimatorSetBuilder builder, AnimationConfig config) { - setWorkspaceProperty(toState, config.getPropertySetter(builder), config); + setWorkspaceProperty(toState, config.getPropertySetter(builder), builder, config); } public float getFinalScale() { @@ -66,26 +70,28 @@ public class WorkspaceStateTransitionAnimation { * Starts a transition animation for the workspace. */ private void setWorkspaceProperty(LauncherState state, PropertySetter propertySetter, - AnimationConfig config) { + AnimatorSetBuilder builder, AnimationConfig config) { float[] scaleAndTranslation = state.getWorkspaceScaleAndTranslation(mLauncher); mNewScale = scaleAndTranslation[0]; PageAlphaProvider pageAlphaProvider = state.getWorkspacePageAlphaProvider(mLauncher); final int childCount = mWorkspace.getChildCount(); for (int i = 0; i < childCount; i++) { applyChildState(state, (CellLayout) mWorkspace.getChildAt(i), i, pageAlphaProvider, - propertySetter, config); + propertySetter, builder, config); } - int elements = state.getVisibleElements(mLauncher); + Interpolator fadeInterpolator = builder.getInterpolator(ANIM_WORKSPACE_FADE, + pageAlphaProvider.interpolator); boolean playAtomicComponent = config.playAtomicComponent(); if (playAtomicComponent) { - propertySetter.setFloat(mWorkspace, SCALE_PROPERTY, mNewScale, Interpolators.ZOOM_OUT); + Interpolator scaleInterpolator = builder.getInterpolator(ANIM_WORKSPACE_SCALE, ZOOM_OUT); + propertySetter.setFloat(mWorkspace, SCALE_PROPERTY, mNewScale, scaleInterpolator); float hotseatIconsAlpha = (elements & HOTSEAT_ICONS) != 0 ? 1 : 0; propertySetter.setViewAlpha(mLauncher.getHotseat().getLayout(), hotseatIconsAlpha, - pageAlphaProvider.interpolator); + fadeInterpolator); propertySetter.setViewAlpha(mLauncher.getWorkspace().getPageIndicator(), - hotseatIconsAlpha, pageAlphaProvider.interpolator); + hotseatIconsAlpha, fadeInterpolator); } if (!config.playNonAtomicComponent()) { @@ -93,43 +99,42 @@ public class WorkspaceStateTransitionAnimation { return; } - Interpolator translationInterpolator = !playAtomicComponent ? Interpolators.LINEAR - : Interpolators.ZOOM_OUT; + Interpolator translationInterpolator = !playAtomicComponent ? LINEAR : ZOOM_OUT; propertySetter.setFloat(mWorkspace, View.TRANSLATION_X, scaleAndTranslation[1], translationInterpolator); propertySetter.setFloat(mWorkspace, View.TRANSLATION_Y, scaleAndTranslation[2], translationInterpolator); propertySetter.setViewAlpha(mLauncher.getHotseatSearchBox(), - (elements & HOTSEAT_SEARCH_BOX) != 0 ? 1 : 0, - pageAlphaProvider.interpolator); + (elements & HOTSEAT_SEARCH_BOX) != 0 ? 1 : 0, fadeInterpolator); // Set scrim WorkspaceAndHotseatScrim scrim = mLauncher.getDragLayer().getScrim(); propertySetter.setFloat(scrim, SCRIM_PROGRESS, state.getWorkspaceScrimAlpha(mLauncher), - Interpolators.LINEAR); - propertySetter.setFloat(scrim, SYSUI_PROGRESS, state.hasSysUiScrim ? 1 : 0, - Interpolators.LINEAR); + LINEAR); + propertySetter.setFloat(scrim, SYSUI_PROGRESS, state.hasSysUiScrim ? 1 : 0, LINEAR); } public void applyChildState(LauncherState state, CellLayout cl, int childIndex) { applyChildState(state, cl, childIndex, state.getWorkspacePageAlphaProvider(mLauncher), - NO_ANIM_PROPERTY_SETTER, new AnimationConfig()); + NO_ANIM_PROPERTY_SETTER, new AnimatorSetBuilder(), new AnimationConfig()); } private void applyChildState(LauncherState state, CellLayout cl, int childIndex, PageAlphaProvider pageAlphaProvider, PropertySetter propertySetter, - AnimationConfig config) { + AnimatorSetBuilder builder, AnimationConfig config) { float pageAlpha = pageAlphaProvider.getPageAlpha(childIndex); int drawableAlpha = Math.round(pageAlpha * (state.hasWorkspacePageBackground ? 255 : 0)); if (config.playNonAtomicComponent()) { propertySetter.setInt(cl.getScrimBackground(), - DRAWABLE_ALPHA, drawableAlpha, Interpolators.ZOOM_OUT); + DRAWABLE_ALPHA, drawableAlpha, ZOOM_OUT); } if (config.playAtomicComponent()) { + Interpolator fadeInterpolator = builder.getInterpolator(ANIM_WORKSPACE_FADE, + pageAlphaProvider.interpolator); propertySetter.setFloat(cl.getShortcutsAndWidgets(), View.ALPHA, - pageAlpha, pageAlphaProvider.interpolator); + pageAlpha, fadeInterpolator); } } }
\ No newline at end of file |