summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
Diffstat (limited to 'src/com')
-rw-r--r--src/com/android/launcher3/LauncherState.java29
-rw-r--r--src/com/android/launcher3/WorkspaceStateTransitionAnimation.java4
-rw-r--r--src/com/android/launcher3/allapps/AllAppsContainerView.java4
-rw-r--r--src/com/android/launcher3/allapps/AllAppsTransitionController.java14
-rw-r--r--src/com/android/launcher3/graphics/WorkspaceAndHotseatScrim.java10
-rw-r--r--src/com/android/launcher3/states/SpringLoadedState.java7
-rw-r--r--src/com/android/launcher3/views/ScrimView.java111
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);
+ }
+ }
+}