Loading quickstep/res/values/dimens.xml +3 −0 Original line number Diff line number Diff line Loading @@ -48,4 +48,7 @@ <!-- Width of the space behind the last task in Overview. In the center of it, there is "Clear all" button. --> <dimen name="clear_all_container_width">168dp</dimen> <dimen name="shelf_surface_radius">16dp</dimen> <dimen name="shelf_surface_top_padding">4dp</dimen> </resources> quickstep/src/com/android/launcher3/uioverrides/AllAppsScrim.java 0 → 100644 +154 −0 Original line number Diff line number Diff line /* * 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.uioverrides; import static com.android.launcher3.anim.Interpolators.ACCEL_2; import static com.android.launcher3.anim.Interpolators.DEACCEL_2; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.support.v4.graphics.ColorUtils; import com.android.launcher3.DeviceProfile; import com.android.launcher3.Launcher; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.allapps.AllAppsContainerView; import com.android.launcher3.graphics.ViewScrim; import com.android.launcher3.util.Themes; /** * Scrim used for all-apps and shelf in Overview * In transposed layout, it behaves as a simple color scrim. * In portrait layout, it draws a rounded rect such that * From normal state to overview state, the shelf just fades in and does not move * From overview state to all-apps state the self moves up and fades in to cover the screen */ public class AllAppsScrim extends ViewScrim<AllAppsContainerView> { private static final int THRESHOLD_ALPHA_DARK = 102; private static final int THRESHOLD_ALPHA_LIGHT = 46; private final Launcher mLauncher; private final int mEndColor; private int mProgressColor; // In transposed layout, we simply draw a flat color. private boolean mDrawingFlatColor; private final Paint mVerticalPaint; private float mVerticalProgress; private final int mEndAlpha; private final int mThresholdAlpha; private final float mRadius; private final float mTopPadding; // Max vertical progress after which the scrim stops moving. private float mMoveThreshold; // Minimum visible size of the scrim. private int mMinSize; private float mDrawFactor = 0; public AllAppsScrim(AllAppsContainerView view) { super(view); mLauncher = Launcher.getLauncher(view.getContext()); mEndColor = Themes.getAttrColor(mLauncher, R.attr.allAppsScrimColor); mProgressColor = mEndColor; mEndAlpha = Color.alpha(mEndColor); mThresholdAlpha = Themes.getAttrBoolean(mLauncher, R.attr.isMainColorDark) ? THRESHOLD_ALPHA_DARK : THRESHOLD_ALPHA_LIGHT; mRadius = mLauncher.getResources().getDimension(R.dimen.shelf_surface_radius); mTopPadding = mLauncher.getResources().getDimension(R.dimen.shelf_surface_top_padding); mVerticalPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mVerticalPaint.setColor(ColorUtils.setAlphaComponent(mEndColor, 255)); // Just assume the easiest UI for now, until we have the proper layout information. mDrawingFlatColor = true; } @Override protected void onProgressChanged() { mProgressColor = ColorUtils.setAlphaComponent(mEndColor, Math.round(DEACCEL_2.getInterpolation(mProgress) * Color.alpha(mEndColor))); } @Override public void draw(Canvas canvas, int width, int height) { if (mDrawingFlatColor) { if (mProgress > 0) { canvas.drawColor(mProgressColor); } return; } if (mVerticalPaint.getAlpha() == 0) { return; } else if (mDrawFactor <= 0) { canvas.drawPaint(mVerticalPaint); } else { float top = (height - mMinSize) * mDrawFactor - mTopPadding; canvas.drawRoundRect(0, top - mRadius, width, height + mRadius, mRadius, mRadius, mVerticalPaint); } } public void reInitUi() { DeviceProfile dp = mLauncher.getDeviceProfile(); mDrawingFlatColor = dp.isVerticalBarLayout(); if (!mDrawingFlatColor) { float swipeLength = OverviewState.getDefaultSwipeHeight(mLauncher); mMoveThreshold = 1 - swipeLength / mLauncher.getAllAppsController().getShiftRange(); mMinSize = dp.hotseatBarSizePx + dp.getInsets().bottom; onVerticalProgress(mVerticalProgress); } invalidate(); } public void onVerticalProgress(float progress) { mVerticalProgress = progress; if (mDrawingFlatColor) { return; } float drawFactor; int alpha; if (mVerticalProgress >= mMoveThreshold) { drawFactor = 1; alpha = mVerticalProgress >= 1 ? 0 : Math.round(mThresholdAlpha * ACCEL_2.getInterpolation((1 - mVerticalProgress) / (1 - mMoveThreshold))); } else if (mVerticalProgress <= 0) { drawFactor = 0; alpha = mEndAlpha; } else { drawFactor = mVerticalProgress / mMoveThreshold; alpha = mEndAlpha - Math.round((mEndAlpha - mThresholdAlpha) * drawFactor); } alpha = Utilities.boundToRange(alpha, 0, 255); if (alpha != mVerticalPaint.getAlpha() || drawFactor != mDrawFactor) { mVerticalPaint.setAlpha(alpha); mDrawFactor = drawFactor; invalidate(); } } } quickstep/src/com/android/quickstep/util/LayoutUtils.java +8 −1 Original line number Diff line number Diff line Loading @@ -38,7 +38,14 @@ public class LayoutUtils { private @interface MultiWindowStrategy {} public static void calculateLauncherTaskSize(Context context, DeviceProfile dp, Rect outRect) { float extraSpace = dp.isVerticalBarLayout() ? 0 : dp.hotseatBarSizePx; float extraSpace; if (dp.isVerticalBarLayout()) { extraSpace = 0; } else { Resources res = context.getResources(); extraSpace = dp.hotseatBarSizePx + res.getDimension(R.dimen.shelf_surface_top_padding) + res.getDimension(R.dimen.shelf_surface_radius); } calculateTaskSize(context, dp, extraSpace, MULTI_WINDOW_STRATEGY_HALF_SCREEN, outRect); } Loading res/values/styles.xml +2 −2 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ </style> <style name="BaseLauncherThemeWithCustomAttrs" parent="@style/BaseLauncherTheme"> <item name="allAppsScrimColor">#CCFFFFFF</item> <item name="allAppsScrimColor">#EAFFFFFF</item> <item name="allAppsNavBarScrimColor">#66FFFFFF</item> <item name="popupColorPrimary">#FFF</item> <item name="popupColorSecondary">#F5F5F5</item> <!-- Gray 100 --> Loading Loading @@ -61,7 +61,7 @@ <item name="android:textColorHint">#A0FFFFFF</item> <item name="android:colorControlHighlight">#A0FFFFFF</item> <item name="android:colorPrimary">#FF333333</item> <item name="allAppsScrimColor">#7A212121</item> <item name="allAppsScrimColor">#EA212121</item> <item name="allAppsNavBarScrimColor">#80000000</item> <item name="popupColorPrimary">?android:attr/colorPrimary</item> <item name="popupColorSecondary">#424242</item> <!-- Gray 800 --> Loading src/com/android/launcher3/allapps/AllAppsContainerView.java +2 −5 Original line number Diff line number Diff line Loading @@ -15,8 +15,6 @@ */ package com.android.launcher3.allapps; import static com.android.launcher3.anim.Interpolators.DEACCEL_2; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; Loading Loading @@ -48,7 +46,7 @@ import com.android.launcher3.ItemInfo; import com.android.launcher3.Launcher; import com.android.launcher3.R; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.graphics.ColorScrim; 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; Loading Loading @@ -112,8 +110,7 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo mAllAppsStore.addUpdateListener(this::onAppsUpdated); // Attach a scrim to be drawn behind all-apps and hotseat new ColorScrim(this, Themes.getAttrColor(context, R.attr.allAppsScrimColor), DEACCEL_2) .attach(); new AllAppsScrim(this).attach(); addSpringView(R.id.all_apps_header); addSpringView(R.id.apps_list_view); Loading Loading
quickstep/res/values/dimens.xml +3 −0 Original line number Diff line number Diff line Loading @@ -48,4 +48,7 @@ <!-- Width of the space behind the last task in Overview. In the center of it, there is "Clear all" button. --> <dimen name="clear_all_container_width">168dp</dimen> <dimen name="shelf_surface_radius">16dp</dimen> <dimen name="shelf_surface_top_padding">4dp</dimen> </resources>
quickstep/src/com/android/launcher3/uioverrides/AllAppsScrim.java 0 → 100644 +154 −0 Original line number Diff line number Diff line /* * 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.uioverrides; import static com.android.launcher3.anim.Interpolators.ACCEL_2; import static com.android.launcher3.anim.Interpolators.DEACCEL_2; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.support.v4.graphics.ColorUtils; import com.android.launcher3.DeviceProfile; import com.android.launcher3.Launcher; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.allapps.AllAppsContainerView; import com.android.launcher3.graphics.ViewScrim; import com.android.launcher3.util.Themes; /** * Scrim used for all-apps and shelf in Overview * In transposed layout, it behaves as a simple color scrim. * In portrait layout, it draws a rounded rect such that * From normal state to overview state, the shelf just fades in and does not move * From overview state to all-apps state the self moves up and fades in to cover the screen */ public class AllAppsScrim extends ViewScrim<AllAppsContainerView> { private static final int THRESHOLD_ALPHA_DARK = 102; private static final int THRESHOLD_ALPHA_LIGHT = 46; private final Launcher mLauncher; private final int mEndColor; private int mProgressColor; // In transposed layout, we simply draw a flat color. private boolean mDrawingFlatColor; private final Paint mVerticalPaint; private float mVerticalProgress; private final int mEndAlpha; private final int mThresholdAlpha; private final float mRadius; private final float mTopPadding; // Max vertical progress after which the scrim stops moving. private float mMoveThreshold; // Minimum visible size of the scrim. private int mMinSize; private float mDrawFactor = 0; public AllAppsScrim(AllAppsContainerView view) { super(view); mLauncher = Launcher.getLauncher(view.getContext()); mEndColor = Themes.getAttrColor(mLauncher, R.attr.allAppsScrimColor); mProgressColor = mEndColor; mEndAlpha = Color.alpha(mEndColor); mThresholdAlpha = Themes.getAttrBoolean(mLauncher, R.attr.isMainColorDark) ? THRESHOLD_ALPHA_DARK : THRESHOLD_ALPHA_LIGHT; mRadius = mLauncher.getResources().getDimension(R.dimen.shelf_surface_radius); mTopPadding = mLauncher.getResources().getDimension(R.dimen.shelf_surface_top_padding); mVerticalPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mVerticalPaint.setColor(ColorUtils.setAlphaComponent(mEndColor, 255)); // Just assume the easiest UI for now, until we have the proper layout information. mDrawingFlatColor = true; } @Override protected void onProgressChanged() { mProgressColor = ColorUtils.setAlphaComponent(mEndColor, Math.round(DEACCEL_2.getInterpolation(mProgress) * Color.alpha(mEndColor))); } @Override public void draw(Canvas canvas, int width, int height) { if (mDrawingFlatColor) { if (mProgress > 0) { canvas.drawColor(mProgressColor); } return; } if (mVerticalPaint.getAlpha() == 0) { return; } else if (mDrawFactor <= 0) { canvas.drawPaint(mVerticalPaint); } else { float top = (height - mMinSize) * mDrawFactor - mTopPadding; canvas.drawRoundRect(0, top - mRadius, width, height + mRadius, mRadius, mRadius, mVerticalPaint); } } public void reInitUi() { DeviceProfile dp = mLauncher.getDeviceProfile(); mDrawingFlatColor = dp.isVerticalBarLayout(); if (!mDrawingFlatColor) { float swipeLength = OverviewState.getDefaultSwipeHeight(mLauncher); mMoveThreshold = 1 - swipeLength / mLauncher.getAllAppsController().getShiftRange(); mMinSize = dp.hotseatBarSizePx + dp.getInsets().bottom; onVerticalProgress(mVerticalProgress); } invalidate(); } public void onVerticalProgress(float progress) { mVerticalProgress = progress; if (mDrawingFlatColor) { return; } float drawFactor; int alpha; if (mVerticalProgress >= mMoveThreshold) { drawFactor = 1; alpha = mVerticalProgress >= 1 ? 0 : Math.round(mThresholdAlpha * ACCEL_2.getInterpolation((1 - mVerticalProgress) / (1 - mMoveThreshold))); } else if (mVerticalProgress <= 0) { drawFactor = 0; alpha = mEndAlpha; } else { drawFactor = mVerticalProgress / mMoveThreshold; alpha = mEndAlpha - Math.round((mEndAlpha - mThresholdAlpha) * drawFactor); } alpha = Utilities.boundToRange(alpha, 0, 255); if (alpha != mVerticalPaint.getAlpha() || drawFactor != mDrawFactor) { mVerticalPaint.setAlpha(alpha); mDrawFactor = drawFactor; invalidate(); } } }
quickstep/src/com/android/quickstep/util/LayoutUtils.java +8 −1 Original line number Diff line number Diff line Loading @@ -38,7 +38,14 @@ public class LayoutUtils { private @interface MultiWindowStrategy {} public static void calculateLauncherTaskSize(Context context, DeviceProfile dp, Rect outRect) { float extraSpace = dp.isVerticalBarLayout() ? 0 : dp.hotseatBarSizePx; float extraSpace; if (dp.isVerticalBarLayout()) { extraSpace = 0; } else { Resources res = context.getResources(); extraSpace = dp.hotseatBarSizePx + res.getDimension(R.dimen.shelf_surface_top_padding) + res.getDimension(R.dimen.shelf_surface_radius); } calculateTaskSize(context, dp, extraSpace, MULTI_WINDOW_STRATEGY_HALF_SCREEN, outRect); } Loading
res/values/styles.xml +2 −2 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ </style> <style name="BaseLauncherThemeWithCustomAttrs" parent="@style/BaseLauncherTheme"> <item name="allAppsScrimColor">#CCFFFFFF</item> <item name="allAppsScrimColor">#EAFFFFFF</item> <item name="allAppsNavBarScrimColor">#66FFFFFF</item> <item name="popupColorPrimary">#FFF</item> <item name="popupColorSecondary">#F5F5F5</item> <!-- Gray 100 --> Loading Loading @@ -61,7 +61,7 @@ <item name="android:textColorHint">#A0FFFFFF</item> <item name="android:colorControlHighlight">#A0FFFFFF</item> <item name="android:colorPrimary">#FF333333</item> <item name="allAppsScrimColor">#7A212121</item> <item name="allAppsScrimColor">#EA212121</item> <item name="allAppsNavBarScrimColor">#80000000</item> <item name="popupColorPrimary">?android:attr/colorPrimary</item> <item name="popupColorSecondary">#424242</item> <!-- Gray 800 --> Loading
src/com/android/launcher3/allapps/AllAppsContainerView.java +2 −5 Original line number Diff line number Diff line Loading @@ -15,8 +15,6 @@ */ package com.android.launcher3.allapps; import static com.android.launcher3.anim.Interpolators.DEACCEL_2; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; Loading Loading @@ -48,7 +46,7 @@ import com.android.launcher3.ItemInfo; import com.android.launcher3.Launcher; import com.android.launcher3.R; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.graphics.ColorScrim; 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; Loading Loading @@ -112,8 +110,7 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo mAllAppsStore.addUpdateListener(this::onAppsUpdated); // Attach a scrim to be drawn behind all-apps and hotseat new ColorScrim(this, Themes.getAttrColor(context, R.attr.allAppsScrimColor), DEACCEL_2) .attach(); new AllAppsScrim(this).attach(); addSpringView(R.id.all_apps_header); addSpringView(R.id.apps_list_view); Loading