diff options
Diffstat (limited to 'src/com')
7 files changed, 141 insertions, 38 deletions
diff --git a/src/com/android/launcher3/LauncherState.java b/src/com/android/launcher3/LauncherState.java index 4697b82f8..f548095ef 100644 --- a/src/com/android/launcher3/LauncherState.java +++ b/src/com/android/launcher3/LauncherState.java @@ -52,17 +52,15 @@ public class LauncherState { public static final int ALL_APPS_CONTENT = 1 << 4; public static final int DRAG_HANDLE_INDICATOR = 1 << 5; - protected static final int FLAG_SHOW_SCRIM = 1 << 0; - protected static final int FLAG_MULTI_PAGE = 1 << 1; - protected static final int FLAG_DISABLE_ACCESSIBILITY = 1 << 2; - protected static final int FLAG_DISABLE_RESTORE = 1 << 3; - protected static final int FLAG_WORKSPACE_ICONS_CAN_BE_DRAGGED = 1 << 4; - protected static final int FLAG_DISABLE_PAGE_CLIPPING = 1 << 5; - protected static final int FLAG_PAGE_BACKGROUNDS = 1 << 6; - protected static final int FLAG_ALL_APPS_SCRIM = 1 << 7; - protected static final int FLAG_DISABLE_INTERACTION = 1 << 8; - protected static final int FLAG_OVERVIEW_UI = 1 << 9; - protected static final int FLAG_HIDE_BACK_BUTTON = 1 << 10; + protected static final int FLAG_MULTI_PAGE = 1 << 0; + protected static final int FLAG_DISABLE_ACCESSIBILITY = 1 << 1; + protected static final int FLAG_DISABLE_RESTORE = 1 << 2; + protected static final int FLAG_WORKSPACE_ICONS_CAN_BE_DRAGGED = 1 << 3; + protected static final int FLAG_DISABLE_PAGE_CLIPPING = 1 << 4; + protected static final int FLAG_PAGE_BACKGROUNDS = 1 << 5; + protected static final int FLAG_DISABLE_INTERACTION = 1 << 6; + protected static final int FLAG_OVERVIEW_UI = 1 << 7; + protected static final int FLAG_HIDE_BACK_BUTTON = 1 << 8; protected static final PageAlphaProvider DEFAULT_ALPHA_PROVIDER = new PageAlphaProvider(ACCEL_2) { @@ -116,9 +114,7 @@ public class LauncherState { * * @see WorkspaceStateTransitionAnimation */ - public final boolean hasScrim; public final boolean hasWorkspacePageBackground; - public final boolean hasAllAppsScrim; public final int transitionDuration; @@ -153,10 +149,7 @@ public class LauncherState { this.containerType = containerType; this.transitionDuration = transitionDuration; - this.hasScrim = (flags & FLAG_SHOW_SCRIM) != 0; this.hasWorkspacePageBackground = (flags & FLAG_PAGE_BACKGROUNDS) != 0; - this.hasAllAppsScrim = (flags & FLAG_ALL_APPS_SCRIM) != 0; - this.hasMultipleVisiblePages = (flags & FLAG_MULTI_PAGE) != 0; this.workspaceAccessibilityFlag = (flags & FLAG_DISABLE_ACCESSIBILITY) != 0 ? IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS @@ -215,6 +208,10 @@ public class LauncherState { return 1f; } + public float getWorkspaceScrimAlpha(Launcher launcher) { + return 0; + } + public String getDescription(Launcher launcher) { return launcher.getWorkspace().getCurrentPageDescription(); } diff --git a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java index 77a45bfc0..8d3d459cc 100644 --- a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java +++ b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java @@ -96,9 +96,7 @@ public class WorkspaceStateTransitionAnimation { // Set scrim propertySetter.setFloat(ViewScrim.get(mWorkspace), ViewScrim.PROGRESS, - state.hasScrim ? 1 : 0, Interpolators.LINEAR); - propertySetter.setFloat(ViewScrim.get(mLauncher.getAppsView()), ViewScrim.PROGRESS, - state.hasAllAppsScrim ? 1 : 0, Interpolators.LINEAR); + state.getWorkspaceScrimAlpha(mLauncher), Interpolators.LINEAR); } public void applyChildState(LauncherState state, CellLayout cl, int childIndex) { diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java index 211d98f8e..f8648bba0 100644 --- a/src/com/android/launcher3/allapps/AllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java @@ -47,7 +47,6 @@ import com.android.launcher3.Launcher; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.config.FeatureFlags; -import com.android.launcher3.uioverrides.AllAppsScrim; import com.android.launcher3.keyboard.FocusedItemDecorator; import com.android.launcher3.userevent.nano.LauncherLogProto.Target; import com.android.launcher3.util.ItemInfoMatcher; @@ -110,9 +109,6 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo mAllAppsStore.addUpdateListener(this::onAppsUpdated); - // Attach a scrim to be drawn behind all-apps and hotseat - new AllAppsScrim(this).attach(); - addSpringView(R.id.all_apps_header); addSpringView(R.id.apps_list_view); addSpringView(R.id.all_apps_tabs_view_pager); diff --git a/src/com/android/launcher3/allapps/AllAppsTransitionController.java b/src/com/android/launcher3/allapps/AllAppsTransitionController.java index 53d3da6cd..6d70a08bd 100644 --- a/src/com/android/launcher3/allapps/AllAppsTransitionController.java +++ b/src/com/android/launcher3/allapps/AllAppsTransitionController.java @@ -26,9 +26,8 @@ import com.android.launcher3.R; import com.android.launcher3.anim.AnimationSuccessListener; import com.android.launcher3.anim.AnimatorSetBuilder; import com.android.launcher3.anim.PropertySetter; -import com.android.launcher3.uioverrides.AllAppsScrim; -import com.android.launcher3.graphics.ViewScrim; import com.android.launcher3.util.Themes; +import com.android.launcher3.views.ScrimView; /** * Handles AllApps view transition. @@ -57,7 +56,7 @@ public class AllAppsTransitionController implements StateHandler, OnDeviceProfil }; private AllAppsContainerView mAppsView; - private AllAppsScrim mAllAppsScrim; + private ScrimView mScrimView; private final Launcher mLauncher; private final boolean mIsDarkTheme; @@ -117,7 +116,7 @@ public class AllAppsTransitionController implements StateHandler, OnDeviceProfil */ public void setProgress(float progress) { mProgress = progress; - mAllAppsScrim.onVerticalProgress(progress); + mScrimView.setProgress(progress); float shiftCurrent = progress * mShiftRange; mAppsView.setTranslationY(shiftCurrent); @@ -209,8 +208,7 @@ public class AllAppsTransitionController implements StateHandler, OnDeviceProfil public void setupViews(AllAppsContainerView appsView) { mAppsView = appsView; - mAllAppsScrim = (AllAppsScrim) ViewScrim.get(mAppsView); - mAllAppsScrim.reInitUi(); + mScrimView = mLauncher.findViewById(R.id.scrim_view); } /** @@ -220,8 +218,8 @@ public class AllAppsTransitionController implements StateHandler, OnDeviceProfil mScrollRangeDelta = delta; mShiftRange = mLauncher.getDeviceProfile().heightPx - mScrollRangeDelta; - if (mAllAppsScrim != null) { - mAllAppsScrim.reInitUi(); + if (mScrimView != null) { + mScrimView.reInitUi(); } } diff --git a/src/com/android/launcher3/graphics/WorkspaceAndHotseatScrim.java b/src/com/android/launcher3/graphics/WorkspaceAndHotseatScrim.java index 5c991e966..136528db2 100644 --- a/src/com/android/launcher3/graphics/WorkspaceAndHotseatScrim.java +++ b/src/com/android/launcher3/graphics/WorkspaceAndHotseatScrim.java @@ -61,7 +61,6 @@ public class WorkspaceAndHotseatScrim extends ViewScrim<Workspace> implements private int mFullScrimColor; - private final int mMaxAlpha; private int mAlpha = 0; public WorkspaceAndHotseatScrim(Workspace view) { @@ -69,7 +68,6 @@ public class WorkspaceAndHotseatScrim extends ViewScrim<Workspace> implements mLauncher = Launcher.getLauncher(view.getContext()); mWallpaperColorInfo = WallpaperColorInfo.getInstance(mLauncher); - mMaxAlpha = mLauncher.getResources().getInteger(R.integer.config_workspaceScrimAlpha); mMaskHeight = Utilities.pxFromDp(ALPHA_MASK_BITMAP_DP, view.getResources().getDisplayMetrics()); @@ -108,7 +106,7 @@ public class WorkspaceAndHotseatScrim extends ViewScrim<Workspace> implements @Override protected void onProgressChanged() { - mAlpha = Math.round(mMaxAlpha * mProgress); + mAlpha = Math.round(255 * mProgress); } @Override @@ -126,9 +124,9 @@ public class WorkspaceAndHotseatScrim extends ViewScrim<Workspace> implements public void onExtractedColorsChanged(WallpaperColorInfo wallpaperColorInfo) { // for super light wallpaper it needs to be darken for contrast to workspace // for dark wallpapers the text is white so darkening works as well - mFullScrimColor = ColorUtils.compositeColors(DARK_SCRIM_COLOR, - wallpaperColorInfo.getMainColor()); - mBottomMaskPaint.setColor(mFullScrimColor); + mBottomMaskPaint.setColor(ColorUtils.compositeColors(DARK_SCRIM_COLOR, + wallpaperColorInfo.getMainColor())); + mFullScrimColor = wallpaperColorInfo.getMainColor(); } public Bitmap createDitheredAlphaMask() { diff --git a/src/com/android/launcher3/states/SpringLoadedState.java b/src/com/android/launcher3/states/SpringLoadedState.java index 90d3821a3..aa7d0d5a3 100644 --- a/src/com/android/launcher3/states/SpringLoadedState.java +++ b/src/com/android/launcher3/states/SpringLoadedState.java @@ -33,7 +33,7 @@ import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType; */ public class SpringLoadedState extends LauncherState { - private static final int STATE_FLAGS = FLAG_SHOW_SCRIM | FLAG_MULTI_PAGE | + private static final int STATE_FLAGS = FLAG_MULTI_PAGE | FLAG_DISABLE_ACCESSIBILITY | FLAG_DISABLE_RESTORE | FLAG_WORKSPACE_ICONS_CAN_BE_DRAGGED | FLAG_DISABLE_PAGE_CLIPPING | FLAG_PAGE_BACKGROUNDS | FLAG_HIDE_BACK_BUTTON; @@ -86,6 +86,11 @@ public class SpringLoadedState extends LauncherState { } @Override + public float getWorkspaceScrimAlpha(Launcher launcher) { + return 0.3f; + } + + @Override public void onStateDisabled(final Launcher launcher) { launcher.getWorkspace().getPageIndicator().setShouldAutoHide(true); diff --git a/src/com/android/launcher3/views/ScrimView.java b/src/com/android/launcher3/views/ScrimView.java new file mode 100644 index 000000000..b49b56568 --- /dev/null +++ b/src/com/android/launcher3/views/ScrimView.java @@ -0,0 +1,111 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.launcher3.views; + +import static android.support.v4.graphics.ColorUtils.compositeColors; +import static android.support.v4.graphics.ColorUtils.setAlphaComponent; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Rect; +import android.util.AttributeSet; +import android.view.View; + +import com.android.launcher3.Insettable; +import com.android.launcher3.R; +import com.android.launcher3.uioverrides.WallpaperColorInfo; +import com.android.launcher3.uioverrides.WallpaperColorInfo.OnChangeListener; +import com.android.launcher3.util.Themes; + +/** + * Simple scrim which draws a flat color + */ +public class ScrimView extends View implements Insettable, OnChangeListener { + + private final WallpaperColorInfo mWallpaperColorInfo; + protected final int mEndScrim; + + protected float mMaxScrimAlpha; + + protected float mProgress = 1; + protected int mScrimColor; + + protected int mCurrentFlatColor; + protected int mEndFlatColor; + protected int mEndFlatColorAlpha; + + public ScrimView(Context context, AttributeSet attrs) { + super(context, attrs); + mWallpaperColorInfo = WallpaperColorInfo.getInstance(context); + mEndScrim = Themes.getAttrColor(context, R.attr.allAppsScrimColor); + + mMaxScrimAlpha = 0.7f; + } + + @Override + public void setInsets(Rect insets) { } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + mWallpaperColorInfo.addOnChangeListener(this); + onExtractedColorsChanged(mWallpaperColorInfo); + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + mWallpaperColorInfo.removeOnChangeListener(this); + } + + @Override + public boolean hasOverlappingRendering() { + return false; + } + + @Override + public void onExtractedColorsChanged(WallpaperColorInfo wallpaperColorInfo) { + mScrimColor = wallpaperColorInfo.getMainColor(); + mEndFlatColor = compositeColors(mEndScrim, setAlphaComponent( + mScrimColor, Math.round(mMaxScrimAlpha * 255))); + mEndFlatColorAlpha = Color.alpha(mEndFlatColor); + updateColors(); + invalidate(); + } + + public void setProgress(float progress) { + if (mProgress != progress) { + mProgress = progress; + updateColors(); + invalidate(); + } + } + + public void reInitUi() { } + + protected void updateColors() { + mCurrentFlatColor = mProgress >= 1 ? 0 : setAlphaComponent( + mEndFlatColor, Math.round((1 - mProgress) * mEndFlatColorAlpha)); + } + + @Override + protected void onDraw(Canvas canvas) { + if (mCurrentFlatColor != 0) { + canvas.drawColor(mCurrentFlatColor); + } + } +} |