diff options
8 files changed, 45 insertions, 25 deletions
diff --git a/quickstep/src/com/android/launcher3/uioverrides/AllAppsState.java b/quickstep/src/com/android/launcher3/uioverrides/AllAppsState.java index 1fb3584a2..b580992c8 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/AllAppsState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/AllAppsState.java @@ -24,7 +24,6 @@ import android.view.View; import com.android.launcher3.AbstractFloatingView; import com.android.launcher3.Launcher; import com.android.launcher3.LauncherState; -import com.android.launcher3.R; import com.android.launcher3.allapps.AllAppsContainerView; import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType; @@ -86,7 +85,7 @@ public class AllAppsState extends LauncherState { @Override public int getVisibleElements(Launcher launcher) { - return ALL_APPS_HEADER | ALL_APPS_CONTENT; + return ALL_APPS_HEADER | ALL_APPS_HEADER_EXTRA | ALL_APPS_CONTENT; } @Override diff --git a/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java b/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java index d123dce5a..0b69c582b 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java @@ -111,16 +111,17 @@ public class OverviewState extends LauncherState { public int getVisibleElements(Launcher launcher) { if (launcher.getDeviceProfile().isVerticalBarLayout()) { // TODO: Remove hotseat from overview - return HOTSEAT; + return HOTSEAT_ICONS; } else { return launcher.getAppsView().getFloatingHeaderView().hasVisibleContent() - ? ALL_APPS_HEADER : HOTSEAT; + ? HOTSEAT_EXTRA | ALL_APPS_HEADER_EXTRA : HOTSEAT_ICONS | HOTSEAT_EXTRA; } } @Override public float getVerticalProgress(Launcher launcher) { - if (getVisibleElements(launcher) == HOTSEAT) { + if ((getVisibleElements(launcher) & ALL_APPS_HEADER_EXTRA) == 0) { + // We have no all apps content, so we're still at the fully down progress. return super.getVerticalProgress(launcher); } return 1 - (getDefaultSwipeHeight(launcher) diff --git a/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java b/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java index 5b5422148..13f9601ee 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java +++ b/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java @@ -17,11 +17,14 @@ package com.android.launcher3.uioverrides; import android.content.Context; +import android.view.View; import android.view.View.AccessibilityDelegate; import com.android.launcher3.AbstractFloatingView; +import com.android.launcher3.Hotseat; import com.android.launcher3.Launcher; import com.android.launcher3.LauncherStateManager.StateHandler; +import com.android.launcher3.R; import com.android.launcher3.util.TouchController; import com.android.quickstep.OverviewInteractionState; import com.android.quickstep.RecentsModel; @@ -84,4 +87,8 @@ public class UiFactory { model.onTrimMemory(level); } } + + public static View getHotseatExtraContent(Hotseat hotseat) { + return hotseat.findViewById(R.id.search_container_hotseat); + } } diff --git a/src/com/android/launcher3/LauncherState.java b/src/com/android/launcher3/LauncherState.java index d5a212091..6185844cc 100644 --- a/src/com/android/launcher3/LauncherState.java +++ b/src/com/android/launcher3/LauncherState.java @@ -46,9 +46,11 @@ public class LauncherState { * Note that workspace is not included here as in that case, we animate individual pages */ public static final int NONE = 0; - public static final int HOTSEAT = 1 << 0; - public static final int ALL_APPS_HEADER = 1 << 1; - public static final int ALL_APPS_CONTENT = 1 << 2; + public static final int HOTSEAT_ICONS = 1 << 0; + public static final int HOTSEAT_EXTRA = 1 << 1; // e.g. a search box + public static final int ALL_APPS_HEADER = 1 << 2; + public static final int ALL_APPS_HEADER_EXTRA = 1 << 3; // e.g. app predictions + public static final int ALL_APPS_CONTENT = 1 << 4; protected static final int FLAG_SHOW_SCRIM = 1 << 0; protected static final int FLAG_MULTI_PAGE = 1 << 1; @@ -193,7 +195,10 @@ public class LauncherState { } public int getVisibleElements(Launcher launcher) { - return HOTSEAT; + if (launcher.getDeviceProfile().isVerticalBarLayout()) { + return HOTSEAT_ICONS; + } + return HOTSEAT_ICONS | HOTSEAT_EXTRA; } /** diff --git a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java index 63c118125..66ea4d48b 100644 --- a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java +++ b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java @@ -18,16 +18,10 @@ package com.android.launcher3; import static com.android.launcher3.LauncherAnimUtils.DRAWABLE_ALPHA; import static com.android.launcher3.LauncherAnimUtils.SCALE_PROPERTY; -import static com.android.launcher3.LauncherState.HOTSEAT; +import static com.android.launcher3.LauncherState.HOTSEAT_EXTRA; +import static com.android.launcher3.LauncherState.HOTSEAT_ICONS; import static com.android.launcher3.anim.PropertySetter.NO_ANIM_PROPERTY_SETTER; -import static com.android.launcher3.compat.AccessibilityManagerCompat.isAccessibilityEnabled; - -import android.animation.Animator; -import android.animation.AnimatorListenerAdapter; -import android.animation.ObjectAnimator; -import android.animation.TimeInterpolator; -import android.animation.ValueAnimator; -import android.util.Property; + import android.view.View; import com.android.launcher3.LauncherState.PageAlphaProvider; @@ -36,6 +30,7 @@ import com.android.launcher3.anim.AnimatorSetBuilder; import com.android.launcher3.anim.Interpolators; import com.android.launcher3.anim.PropertySetter; import com.android.launcher3.graphics.ViewScrim; +import com.android.launcher3.uioverrides.UiFactory; /** * Manages the animations between each of the workspace states. @@ -85,11 +80,14 @@ public class WorkspaceStateTransitionAnimation { scaleAndTranslation[2], Interpolators.ZOOM_IN); int elements = state.getVisibleElements(mLauncher); - float hotseatAlpha = (elements & HOTSEAT) != 0 ? 1 : 0; - propertySetter.setViewAlpha(mLauncher.getHotseat(), hotseatAlpha, + float hotseatIconsAlpha = (elements & HOTSEAT_ICONS) != 0 ? 1 : 0; + float hotseatExtraAlpha = (elements & HOTSEAT_EXTRA) != 0 ? 1 : 0; + propertySetter.setViewAlpha(mLauncher.getHotseat().getLayout(), hotseatIconsAlpha, pageAlphaProvider.interpolator); + propertySetter.setViewAlpha(UiFactory.getHotseatExtraContent(mLauncher.getHotseat()), + hotseatExtraAlpha, pageAlphaProvider.interpolator); propertySetter.setViewAlpha(mLauncher.getWorkspace().getPageIndicator(), - hotseatAlpha, pageAlphaProvider.interpolator); + hotseatIconsAlpha, pageAlphaProvider.interpolator); // Set scrim propertySetter.setFloat(ViewScrim.get(mWorkspace), ViewScrim.PROGRESS, diff --git a/src/com/android/launcher3/allapps/AllAppsTransitionController.java b/src/com/android/launcher3/allapps/AllAppsTransitionController.java index bf8f531cc..fbd23d15a 100644 --- a/src/com/android/launcher3/allapps/AllAppsTransitionController.java +++ b/src/com/android/launcher3/allapps/AllAppsTransitionController.java @@ -2,6 +2,7 @@ package com.android.launcher3.allapps; import static com.android.launcher3.LauncherState.ALL_APPS_CONTENT; import static com.android.launcher3.LauncherState.ALL_APPS_HEADER; +import static com.android.launcher3.LauncherState.ALL_APPS_HEADER_EXTRA; import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN; import static com.android.launcher3.anim.Interpolators.LINEAR; import static com.android.launcher3.anim.PropertySetter.NO_ANIM_PROPERTY_SETTER; @@ -179,12 +180,13 @@ public class AllAppsTransitionController private void setAlphas(LauncherState toState, PropertySetter setter) { int visibleElements = toState.getVisibleElements(mLauncher); boolean hasHeader = (visibleElements & ALL_APPS_HEADER) != 0; + boolean hasHeaderExtra = (visibleElements & ALL_APPS_HEADER_EXTRA) != 0; boolean hasContent = (visibleElements & ALL_APPS_CONTENT) != 0; setter.setViewAlpha(mAppsView.getSearchView(), hasHeader ? 1 : 0, LINEAR); setter.setViewAlpha(mAppsView.getContentView(), hasContent ? 1 : 0, LINEAR); setter.setViewAlpha(mAppsView.getScrollBar(), hasContent ? 1 : 0, LINEAR); - mAppsView.getFloatingHeaderView().setContentVisibility(hasHeader, hasContent, setter); + mAppsView.getFloatingHeaderView().setContentVisibility(hasHeaderExtra, hasContent, setter); } public AnimatorListenerAdapter getProgressAnimatorListener() { diff --git a/src/com/android/launcher3/anim/PropertySetter.java b/src/com/android/launcher3/anim/PropertySetter.java index 51580b1ea..1f11f7e63 100644 --- a/src/com/android/launcher3/anim/PropertySetter.java +++ b/src/com/android/launcher3/anim/PropertySetter.java @@ -32,8 +32,10 @@ public class PropertySetter { public static final PropertySetter NO_ANIM_PROPERTY_SETTER = new PropertySetter(); public void setViewAlpha(View view, float alpha, TimeInterpolator interpolator) { - view.setAlpha(alpha); - AlphaUpdateListener.updateVisibility(view, isAccessibilityEnabled(view.getContext())); + if (view != null) { + view.setAlpha(alpha); + AlphaUpdateListener.updateVisibility(view, isAccessibilityEnabled(view.getContext())); + } } public <T> void setFloat(T target, Property<T, Float> property, float value, @@ -58,7 +60,7 @@ public class PropertySetter { @Override public void setViewAlpha(View view, float alpha, TimeInterpolator interpolator) { - if (view.getAlpha() == alpha) { + if (view == null || view.getAlpha() == alpha) { return; } ObjectAnimator anim = ObjectAnimator.ofFloat(view, View.ALPHA, alpha); diff --git a/src_ui_overrides/com/android/launcher3/uioverrides/UiFactory.java b/src_ui_overrides/com/android/launcher3/uioverrides/UiFactory.java index 1227dfebf..c4b4a4585 100644 --- a/src_ui_overrides/com/android/launcher3/uioverrides/UiFactory.java +++ b/src_ui_overrides/com/android/launcher3/uioverrides/UiFactory.java @@ -16,8 +16,10 @@ package com.android.launcher3.uioverrides; +import android.view.View; import android.view.View.AccessibilityDelegate; +import com.android.launcher3.Hotseat; import com.android.launcher3.Launcher; import com.android.launcher3.LauncherStateManager.StateHandler; import com.android.launcher3.util.TouchController; @@ -45,4 +47,8 @@ public class UiFactory { public static void onStart(Launcher launcher) { } public static void onTrimMemory(Launcher launcher, int level) { } + + public static View getHotseatExtraContent(Hotseat hotseat) { + return null; + } } |