Loading quickstep/src/com/android/launcher3/taskbar/TaskbarModelCallbacks.java +1 −4 Original line number Diff line number Diff line Loading @@ -184,7 +184,6 @@ public class TaskbarModelCallbacks implements int predictionSize = mPredictedItems.size(); int predictionNextIndex = 0; boolean isHotseatEmpty = true; for (int i = 0; i < hotseatItemInfos.length; i++) { hotseatItemInfos[i] = mHotseatItems.get(i); if (hotseatItemInfos[i] == null && predictionNextIndex < predictionSize) { Loading @@ -192,13 +191,11 @@ public class TaskbarModelCallbacks implements hotseatItemInfos[i].screenId = i; predictionNextIndex++; } if (hotseatItemInfos[i] != null) { isHotseatEmpty = false; } } hotseatItemInfos = mControllers.taskbarRecentAppsController .updateHotseatItemInfos(hotseatItemInfos); mContainer.updateHotseatItems(hotseatItemInfos); mControllers.taskbarViewController.updateIconsBackground(); } @Override Loading quickstep/src/com/android/launcher3/taskbar/TaskbarView.java +0 −24 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ import android.widget.FrameLayout; import androidx.annotation.LayoutRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.graphics.ColorUtils; import com.android.launcher3.BubbleTextView; import com.android.launcher3.DeviceProfile; Loading @@ -60,11 +59,8 @@ import java.util.function.Predicate; public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconParent, Insettable { private static final String TAG = TaskbarView.class.getSimpleName(); private static final float TASKBAR_BACKGROUND_LUMINANCE = 0.30f; private static final Rect sTmpRect = new Rect(); public int mThemeIconsBackground; private final int[] mTempOutLocation = new int[2]; private final Rect mIconLayoutBounds; private final int mIconTouchSize; Loading Loading @@ -139,8 +135,6 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar // Needed to draw folder leave-behind when opening one. setWillNotDraw(false); mThemeIconsBackground = calculateThemeIconsBackground(); if (!mActivityContext.getPackageManager().hasSystemFeature(FEATURE_PC)) { mAllAppsButton = (IconButtonView) LayoutInflater.from(context) .inflate(R.layout.taskbar_all_apps_button, this, false); Loading Loading @@ -182,13 +176,6 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar .sendAccessibilityEvent(TYPE_WINDOW_CONTENT_CHANGED); } private int getColorWithGivenLuminance(int color, float luminance) { float[] colorHSL = new float[3]; ColorUtils.colorToHSL(color, colorHSL); colorHSL[2] = luminance; return ColorUtils.HSLToColor(colorHSL); } /** * Returns the icon touch size. */ Loading @@ -196,14 +183,6 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar return mIconTouchSize; } private int calculateThemeIconsBackground() { int color = ThemedIconDrawable.getColors(mContext)[0]; if (Utilities.isDarkTheme(mContext)) { return getColorWithGivenLuminance(color, TASKBAR_BACKGROUND_LUMINANCE); } return color; } protected void init(TaskbarViewController.TaskbarViewCallbacks callbacks) { mControllerCallbacks = callbacks; mIconClickListener = mControllerCallbacks.getIconOnClickListener(); Loading Loading @@ -332,9 +311,6 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar // Always set QSB to invisible after re-adding. mQsb.setVisibility(View.INVISIBLE); } mThemeIconsBackground = calculateThemeIconsBackground(); setThemedIconsBackgroundColor(mThemeIconsBackground); } /** Loading quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java +30 −14 Original line number Diff line number Diff line Loading @@ -93,6 +93,8 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar // This allows the icons on the edge to stay within the taskbar background bounds. private static final float ICON_REVEAL_X_DURATION_MULTIPLIER = 0.8f; private static final float TASKBAR_DARK_THEME_ICONS_BACKGROUND_LUMINANCE = 0.30f; private final TaskbarActivityContext mActivity; private final TaskbarView mTaskbarView; private final MultiValueAlpha mTaskbarIconAlpha; Loading @@ -107,13 +109,16 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar private final int mTaskbarBottomMargin; private final int mStashedHandleHeight; private final int mLauncherThemedIconsBackgroundColor; private final int mTaskbarThemedIconsBackgroundColor; private final AnimatedFloat mThemeIconsBackground = new AnimatedFloat( /** Progress from {@code 0} for Launcher's color to {@code 1} for Taskbar's color. */ private final AnimatedFloat mThemedIconsBackgroundProgress = new AnimatedFloat( this::updateIconsBackground); private final TaskbarModelCallbacks mModelCallbacks; // Captures swipe down action to close transient taskbar. // Captures swipe down action to close transient Taskbar. protected @Nullable SingleAxisSwipeDetector mSwipeDownDetector; // Initialized in init. Loading @@ -124,7 +129,6 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar private AnimatorPlaybackController mIconAlignControllerLazy = null; private Runnable mOnControllerPreCreateCallback = NO_OP; private int mThemeIconsColor; private boolean mIsHotseatIconOnTopWhenAligned; private final DeviceProfile.OnDeviceProfileChangeListener mDeviceProfileChangeListener = Loading @@ -141,6 +145,16 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar : 0; mStashedHandleHeight = activity.getResources() .getDimensionPixelSize(R.dimen.taskbar_stashed_handle_height); mLauncherThemedIconsBackgroundColor = ThemedIconDrawable.getColors(mActivity)[0]; if (!Utilities.isDarkTheme(mActivity)) { mTaskbarThemedIconsBackgroundColor = mLauncherThemedIconsBackgroundColor; } else { // Increase luminance for dark themed icons given they are on a dark Taskbar background. float[] colorHSL = new float[3]; ColorUtils.colorToHSL(mLauncherThemedIconsBackgroundColor, colorHSL); colorHSL[2] = TASKBAR_DARK_THEME_ICONS_BACKGROUND_LUMINANCE; mTaskbarThemedIconsBackgroundColor = ColorUtils.HSLToColor(colorHSL); } if (DisplayController.isTransientTaskbar(mActivity)) { mSwipeDownDetector = new SingleAxisSwipeDetector(activity, Loading Loading @@ -174,7 +188,6 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar mTaskbarView.getLayoutParams().height = isPhoneMode(mActivity.getDeviceProfile()) ? mActivity.getResources().getDimensionPixelSize(R.dimen.taskbar_size) : mActivity.getDeviceProfile().taskbarSize; mThemeIconsColor = ThemedIconDrawable.getColors(mTaskbarView.getContext())[0]; mTaskbarIconScaleForStash.updateValue(1f); Loading Loading @@ -213,7 +226,7 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar } /** * Should be called when the recents button is disabled, so we can hide taskbar icons as well. * Should be called when the recents button is disabled, so we can hide Taskbar icons as well. */ public void setRecentsButtonDisabled(boolean isDisabled) { // TODO: check TaskbarStashController#supportsStashing(), to stash instead of setting alpha. Loading @@ -228,7 +241,7 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar } /** * Adds one time pre draw listener to the taskbar view, it is called before * Adds one time pre draw listener to the Taskbar view, it is called before * drawing a frame and invoked only once * @param listener callback that will be invoked before drawing the next frame */ Loading Loading @@ -284,12 +297,15 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar + mTaskbarIconTranslationYForSwipe); } private void updateIconsBackground() { /** * Updates the Taskbar's themed icons background according to the progress between in-app/home. */ protected void updateIconsBackground() { mTaskbarView.setThemedIconsBackgroundColor( ColorUtils.blendARGB( mThemeIconsColor, mTaskbarView.mThemeIconsBackground, mThemeIconsBackground.value mLauncherThemedIconsBackgroundColor, mTaskbarThemedIconsBackgroundColor, mThemedIconsBackgroundProgress.value )); } Loading Loading @@ -347,7 +363,7 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar // We look at 'left' and 'right' values to ensure that the children stay within the // bounds of the stashed handle. // All of the taskbar icons will overlap the entirety of the stashed handle // All of the Taskbar icons will overlap the entirety of the stashed handle // And the QSB, if inline, will overlap part of stashed handle as well. int positionInHandle = (isQsbInline && !isQsb) ? i + (isRtl ? 1 : -1) Loading Loading @@ -397,7 +413,7 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar } /** * Sets the taskbar icon alignment relative to Launcher hotseat icons * Sets the Taskbar icon alignment relative to Launcher hotseat icons * @param alignmentRatio [0, 1] * 0 => not aligned * 1 => fully aligned Loading @@ -419,7 +435,7 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar } /** * Creates an animation for aligning the taskbar icons with the provided Launcher device profile * Creates an animation for aligning the Taskbar icons with the provided Launcher device profile */ private AnimatorPlaybackController createIconAlignmentController(DeviceProfile launcherDp) { mOnControllerPreCreateCallback.run(); Loading @@ -444,7 +460,7 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar setter.setFloat(mTaskbarNavButtonTranslationYForInAppDisplay, VALUE, offsetY, interpolator); if (Utilities.isDarkTheme(mTaskbarView.getContext())) { setter.addFloat(mThemeIconsBackground, VALUE, 0f, 1f, LINEAR); setter.addFloat(mThemedIconsBackgroundProgress, VALUE, 1f, 0f, LINEAR); } int collapsedHeight = mActivity.getDefaultTaskbarWindowHeight(); Loading Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarModelCallbacks.java +1 −4 Original line number Diff line number Diff line Loading @@ -184,7 +184,6 @@ public class TaskbarModelCallbacks implements int predictionSize = mPredictedItems.size(); int predictionNextIndex = 0; boolean isHotseatEmpty = true; for (int i = 0; i < hotseatItemInfos.length; i++) { hotseatItemInfos[i] = mHotseatItems.get(i); if (hotseatItemInfos[i] == null && predictionNextIndex < predictionSize) { Loading @@ -192,13 +191,11 @@ public class TaskbarModelCallbacks implements hotseatItemInfos[i].screenId = i; predictionNextIndex++; } if (hotseatItemInfos[i] != null) { isHotseatEmpty = false; } } hotseatItemInfos = mControllers.taskbarRecentAppsController .updateHotseatItemInfos(hotseatItemInfos); mContainer.updateHotseatItems(hotseatItemInfos); mControllers.taskbarViewController.updateIconsBackground(); } @Override Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarView.java +0 −24 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ import android.widget.FrameLayout; import androidx.annotation.LayoutRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.graphics.ColorUtils; import com.android.launcher3.BubbleTextView; import com.android.launcher3.DeviceProfile; Loading @@ -60,11 +59,8 @@ import java.util.function.Predicate; public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconParent, Insettable { private static final String TAG = TaskbarView.class.getSimpleName(); private static final float TASKBAR_BACKGROUND_LUMINANCE = 0.30f; private static final Rect sTmpRect = new Rect(); public int mThemeIconsBackground; private final int[] mTempOutLocation = new int[2]; private final Rect mIconLayoutBounds; private final int mIconTouchSize; Loading Loading @@ -139,8 +135,6 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar // Needed to draw folder leave-behind when opening one. setWillNotDraw(false); mThemeIconsBackground = calculateThemeIconsBackground(); if (!mActivityContext.getPackageManager().hasSystemFeature(FEATURE_PC)) { mAllAppsButton = (IconButtonView) LayoutInflater.from(context) .inflate(R.layout.taskbar_all_apps_button, this, false); Loading Loading @@ -182,13 +176,6 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar .sendAccessibilityEvent(TYPE_WINDOW_CONTENT_CHANGED); } private int getColorWithGivenLuminance(int color, float luminance) { float[] colorHSL = new float[3]; ColorUtils.colorToHSL(color, colorHSL); colorHSL[2] = luminance; return ColorUtils.HSLToColor(colorHSL); } /** * Returns the icon touch size. */ Loading @@ -196,14 +183,6 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar return mIconTouchSize; } private int calculateThemeIconsBackground() { int color = ThemedIconDrawable.getColors(mContext)[0]; if (Utilities.isDarkTheme(mContext)) { return getColorWithGivenLuminance(color, TASKBAR_BACKGROUND_LUMINANCE); } return color; } protected void init(TaskbarViewController.TaskbarViewCallbacks callbacks) { mControllerCallbacks = callbacks; mIconClickListener = mControllerCallbacks.getIconOnClickListener(); Loading Loading @@ -332,9 +311,6 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar // Always set QSB to invisible after re-adding. mQsb.setVisibility(View.INVISIBLE); } mThemeIconsBackground = calculateThemeIconsBackground(); setThemedIconsBackgroundColor(mThemeIconsBackground); } /** Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java +30 −14 Original line number Diff line number Diff line Loading @@ -93,6 +93,8 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar // This allows the icons on the edge to stay within the taskbar background bounds. private static final float ICON_REVEAL_X_DURATION_MULTIPLIER = 0.8f; private static final float TASKBAR_DARK_THEME_ICONS_BACKGROUND_LUMINANCE = 0.30f; private final TaskbarActivityContext mActivity; private final TaskbarView mTaskbarView; private final MultiValueAlpha mTaskbarIconAlpha; Loading @@ -107,13 +109,16 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar private final int mTaskbarBottomMargin; private final int mStashedHandleHeight; private final int mLauncherThemedIconsBackgroundColor; private final int mTaskbarThemedIconsBackgroundColor; private final AnimatedFloat mThemeIconsBackground = new AnimatedFloat( /** Progress from {@code 0} for Launcher's color to {@code 1} for Taskbar's color. */ private final AnimatedFloat mThemedIconsBackgroundProgress = new AnimatedFloat( this::updateIconsBackground); private final TaskbarModelCallbacks mModelCallbacks; // Captures swipe down action to close transient taskbar. // Captures swipe down action to close transient Taskbar. protected @Nullable SingleAxisSwipeDetector mSwipeDownDetector; // Initialized in init. Loading @@ -124,7 +129,6 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar private AnimatorPlaybackController mIconAlignControllerLazy = null; private Runnable mOnControllerPreCreateCallback = NO_OP; private int mThemeIconsColor; private boolean mIsHotseatIconOnTopWhenAligned; private final DeviceProfile.OnDeviceProfileChangeListener mDeviceProfileChangeListener = Loading @@ -141,6 +145,16 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar : 0; mStashedHandleHeight = activity.getResources() .getDimensionPixelSize(R.dimen.taskbar_stashed_handle_height); mLauncherThemedIconsBackgroundColor = ThemedIconDrawable.getColors(mActivity)[0]; if (!Utilities.isDarkTheme(mActivity)) { mTaskbarThemedIconsBackgroundColor = mLauncherThemedIconsBackgroundColor; } else { // Increase luminance for dark themed icons given they are on a dark Taskbar background. float[] colorHSL = new float[3]; ColorUtils.colorToHSL(mLauncherThemedIconsBackgroundColor, colorHSL); colorHSL[2] = TASKBAR_DARK_THEME_ICONS_BACKGROUND_LUMINANCE; mTaskbarThemedIconsBackgroundColor = ColorUtils.HSLToColor(colorHSL); } if (DisplayController.isTransientTaskbar(mActivity)) { mSwipeDownDetector = new SingleAxisSwipeDetector(activity, Loading Loading @@ -174,7 +188,6 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar mTaskbarView.getLayoutParams().height = isPhoneMode(mActivity.getDeviceProfile()) ? mActivity.getResources().getDimensionPixelSize(R.dimen.taskbar_size) : mActivity.getDeviceProfile().taskbarSize; mThemeIconsColor = ThemedIconDrawable.getColors(mTaskbarView.getContext())[0]; mTaskbarIconScaleForStash.updateValue(1f); Loading Loading @@ -213,7 +226,7 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar } /** * Should be called when the recents button is disabled, so we can hide taskbar icons as well. * Should be called when the recents button is disabled, so we can hide Taskbar icons as well. */ public void setRecentsButtonDisabled(boolean isDisabled) { // TODO: check TaskbarStashController#supportsStashing(), to stash instead of setting alpha. Loading @@ -228,7 +241,7 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar } /** * Adds one time pre draw listener to the taskbar view, it is called before * Adds one time pre draw listener to the Taskbar view, it is called before * drawing a frame and invoked only once * @param listener callback that will be invoked before drawing the next frame */ Loading Loading @@ -284,12 +297,15 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar + mTaskbarIconTranslationYForSwipe); } private void updateIconsBackground() { /** * Updates the Taskbar's themed icons background according to the progress between in-app/home. */ protected void updateIconsBackground() { mTaskbarView.setThemedIconsBackgroundColor( ColorUtils.blendARGB( mThemeIconsColor, mTaskbarView.mThemeIconsBackground, mThemeIconsBackground.value mLauncherThemedIconsBackgroundColor, mTaskbarThemedIconsBackgroundColor, mThemedIconsBackgroundProgress.value )); } Loading Loading @@ -347,7 +363,7 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar // We look at 'left' and 'right' values to ensure that the children stay within the // bounds of the stashed handle. // All of the taskbar icons will overlap the entirety of the stashed handle // All of the Taskbar icons will overlap the entirety of the stashed handle // And the QSB, if inline, will overlap part of stashed handle as well. int positionInHandle = (isQsbInline && !isQsb) ? i + (isRtl ? 1 : -1) Loading Loading @@ -397,7 +413,7 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar } /** * Sets the taskbar icon alignment relative to Launcher hotseat icons * Sets the Taskbar icon alignment relative to Launcher hotseat icons * @param alignmentRatio [0, 1] * 0 => not aligned * 1 => fully aligned Loading @@ -419,7 +435,7 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar } /** * Creates an animation for aligning the taskbar icons with the provided Launcher device profile * Creates an animation for aligning the Taskbar icons with the provided Launcher device profile */ private AnimatorPlaybackController createIconAlignmentController(DeviceProfile launcherDp) { mOnControllerPreCreateCallback.run(); Loading @@ -444,7 +460,7 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar setter.setFloat(mTaskbarNavButtonTranslationYForInAppDisplay, VALUE, offsetY, interpolator); if (Utilities.isDarkTheme(mTaskbarView.getContext())) { setter.addFloat(mThemeIconsBackground, VALUE, 0f, 1f, LINEAR); setter.addFloat(mThemedIconsBackgroundProgress, VALUE, 1f, 0f, LINEAR); } int collapsedHeight = mActivity.getDefaultTaskbarWindowHeight(); Loading