From f153d917dd423b9e02745699af9850841acd7b08 Mon Sep 17 00:00:00 2001 From: Sebastian Franco Date: Fri, 22 Apr 2022 16:15:27 -0500 Subject: [PATCH 1/6] Adding support for LauncherAppWidgetHostView in CellLayout With the introduction of LauncherAppWidgetHostView, CellLayout no longer reorder correctly when dragging a widget. Fix: 221495448 Test: When dragging a widget and all spaces are occupied, other icons should move to the place the widget being dragged used to occupy. Change-Id: I59ab21eb2717b56a216900049bb4546504e773ba --- src/com/android/launcher3/CellLayout.java | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/com/android/launcher3/CellLayout.java b/src/com/android/launcher3/CellLayout.java index 87bbac6cd4..76e945dc11 100644 --- a/src/com/android/launcher3/CellLayout.java +++ b/src/com/android/launcher3/CellLayout.java @@ -65,6 +65,7 @@ import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.dragndrop.DraggableView; import com.android.launcher3.folder.PreviewBackground; import com.android.launcher3.model.data.ItemInfo; +import com.android.launcher3.model.data.LauncherAppWidgetInfo; import com.android.launcher3.util.CellAndSpan; import com.android.launcher3.util.GridOccupancy; import com.android.launcher3.util.ParcelableSparseArray; @@ -290,7 +291,7 @@ public class CellLayout extends ViewGroup { for (int i = 0; i < mDragOutlineAnims.length; i++) { final InterruptibleInOutAnimator anim = - new InterruptibleInOutAnimator(duration, fromAlphaValue, toAlphaValue); + new InterruptibleInOutAnimator(duration, fromAlphaValue, toAlphaValue); anim.getAnimator().setInterpolator(mEaseOutInterpolator); final int thisIndex = i; anim.getAnimator().addUpdateListener(new AnimatorUpdateListener() { @@ -2440,7 +2441,7 @@ public class CellLayout extends ViewGroup { // First we determine if things have moved enough to cause a different layout ItemConfiguration swapSolution = findReorderSolution(pixelXY[0], pixelXY[1], spanX, spanY, - spanX, spanY, direction, dragView, true, new ItemConfiguration()); + spanX, spanY, direction, dragView, true, new ItemConfiguration()); setUseTempCoords(true); if (swapSolution != null && swapSolution.isSolution) { @@ -2477,7 +2478,7 @@ public class CellLayout extends ViewGroup { // direction vector, since we want the solution to match the preview, and it's possible // that the exact position of the item has changed to result in a new reordering outcome. if ((mode == MODE_ON_DROP || mode == MODE_ON_DROP_EXTERNAL || mode == MODE_ACCEPT_DROP) - && mPreviousReorderDirection[0] != INVALID_DIRECTION) { + && mPreviousReorderDirection[0] != INVALID_DIRECTION) { mDirectionVector[0] = mPreviousReorderDirection[0]; mDirectionVector[1] = mPreviousReorderDirection[1]; // We reset this vector after drop @@ -2493,7 +2494,7 @@ public class CellLayout extends ViewGroup { // Find a solution involving pushing / displacing any items in the way ItemConfiguration swapSolution = findReorderSolution(pixelX, pixelY, minSpanX, minSpanY, - spanX, spanY, mDirectionVector, dragView, true, new ItemConfiguration()); + spanX, spanY, mDirectionVector, dragView, true, new ItemConfiguration()); // We attempt the approach which doesn't shuffle views at all ItemConfiguration noShuffleSolution = findConfigurationNoShuffle(pixelX, pixelY, minSpanX, @@ -2733,12 +2734,24 @@ public class CellLayout extends ViewGroup { } public void markCellsAsOccupiedForView(View view) { + if (view instanceof LauncherAppWidgetHostView + && view.getTag() instanceof LauncherAppWidgetInfo) { + LauncherAppWidgetInfo info = (LauncherAppWidgetInfo) view.getTag(); + mOccupied.markCells(info.cellX, info.cellY, info.spanX, info.spanY, true); + return; + } if (view == null || view.getParent() != mShortcutsAndWidgets) return; LayoutParams lp = (LayoutParams) view.getLayoutParams(); mOccupied.markCells(lp.cellX, lp.cellY, lp.cellHSpan, lp.cellVSpan, true); } public void markCellsAsUnoccupiedForView(View view) { + if (view instanceof LauncherAppWidgetHostView + && view.getTag() instanceof LauncherAppWidgetInfo) { + LauncherAppWidgetInfo info = (LauncherAppWidgetInfo) view.getTag(); + mOccupied.markCells(info.cellX, info.cellY, info.spanX, info.spanY, false); + return; + } if (view == null || view.getParent() != mShortcutsAndWidgets) return; LayoutParams lp = (LayoutParams) view.getLayoutParams(); mOccupied.markCells(lp.cellX, lp.cellY, lp.cellHSpan, lp.cellVSpan, false); From ef006c76036995cfe1c48b6fce84e6204858b361 Mon Sep 17 00:00:00 2001 From: Luca Zuccarini Date: Mon, 2 May 2022 10:34:17 +0000 Subject: [PATCH 2/6] Update the NORMAL->ALL_APPS transition when tapping on QSB on phones. - New interpolators - New duration - Removed workspace translation - Removed overlapping fades -- are now sequential See video in the bug. Bug: 227745955 Test: manual Change-Id: I19fa19a3806e963a04c5e694a52d3c1b921cf51f --- .../uioverrides/states/AllAppsState.java | 16 ++++-- .../QuickstepAtomicAnimationFactory.java | 5 +- res/values/dimens.xml | 2 +- .../WorkspaceStateTransitionAnimation.java | 13 +++-- .../android/launcher3/anim/Interpolators.java | 5 ++ .../states/StateAnimationConfig.java | 4 +- .../touch/AllAppsSwipeController.java | 56 +++++++++++++++++-- .../uioverrides/states/AllAppsState.java | 18 ++++-- 8 files changed, 93 insertions(+), 26 deletions(-) diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/AllAppsState.java b/quickstep/src/com/android/launcher3/uioverrides/states/AllAppsState.java index 7b016706cb..3b1f119ac2 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/AllAppsState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/AllAppsState.java @@ -58,17 +58,21 @@ public class AllAppsState extends LauncherState { @Override public ScaleAndTranslation getWorkspaceScaleAndTranslation(Launcher launcher) { - ScaleAndTranslation scaleAndTranslation = - new ScaleAndTranslation(NO_SCALE, NO_OFFSET, NO_OFFSET); + return new ScaleAndTranslation(0.97f, NO_OFFSET, NO_OFFSET); + } + + @Override + public ScaleAndTranslation getHotseatScaleAndTranslation(Launcher launcher) { if (launcher.getDeviceProfile().isTablet) { - scaleAndTranslation.scale = 0.97f; + return getWorkspaceScaleAndTranslation(launcher); } else { ScaleAndTranslation overviewScaleAndTranslation = LauncherState.OVERVIEW .getWorkspaceScaleAndTranslation(launcher); - scaleAndTranslation.translationX = overviewScaleAndTranslation.translationX; - scaleAndTranslation.translationY = overviewScaleAndTranslation.translationY; + return new ScaleAndTranslation( + NO_SCALE, + overviewScaleAndTranslation.translationX, + overviewScaleAndTranslation.translationY); } - return scaleAndTranslation; } @Override diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java b/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java index b5b03a1ec6..f2162b03af 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java @@ -192,7 +192,10 @@ public class QuickstepAtomicAnimationFactory extends 1 - ALL_APPS_SCRIM_VISIBLE_THRESHOLD)); config.setInterpolator(ANIM_VERTICAL_PROGRESS, EMPHASIZED_ACCELERATE); } else if (fromState == NORMAL && toState == ALL_APPS) { - config.setInterpolator(ANIM_VERTICAL_PROGRESS, EMPHASIZED_DECELERATE); + if (mActivity.getDeviceProfile().isTablet) { + config.setInterpolator(ANIM_VERTICAL_PROGRESS, EMPHASIZED_DECELERATE); + } + // TODO(b/231682175): centralize this setup in AllAppsSwipeController } } } diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 2c3f5ed6d8..7d8914e967 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -100,7 +100,7 @@ -26dp - 320dp + 300dp 48dp 24dp diff --git a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java index bf56ac0443..a991c2f959 100644 --- a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java +++ b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java @@ -36,6 +36,7 @@ import static com.android.launcher3.anim.Interpolators.ZOOM_OUT; import static com.android.launcher3.anim.PropertySetter.NO_ANIM_PROPERTY_SETTER; import static com.android.launcher3.graphics.Scrim.SCRIM_PROGRESS; import static com.android.launcher3.graphics.SysUiScrim.SYSUI_PROGRESS; +import static com.android.launcher3.states.StateAnimationConfig.ANIM_HOTSEAT_FADE; import static com.android.launcher3.states.StateAnimationConfig.ANIM_HOTSEAT_SCALE; import static com.android.launcher3.states.StateAnimationConfig.ANIM_HOTSEAT_TRANSLATE; import static com.android.launcher3.states.StateAnimationConfig.ANIM_SCRIM_FADE; @@ -117,8 +118,6 @@ public class WorkspaceStateTransitionAnimation { } int elements = state.getVisibleElements(mLauncher); - Interpolator fadeInterpolator = config.getInterpolator(ANIM_WORKSPACE_FADE, - pageAlphaProvider.interpolator); Hotseat hotseat = mWorkspace.getHotseat(); Interpolator scaleInterpolator = config.getInterpolator(ANIM_WORKSPACE_SCALE, ZOOM_OUT); LauncherState fromState = mLauncher.getStateManager().getState(); @@ -146,11 +145,15 @@ public class WorkspaceStateTransitionAnimation { hotseatScaleInterpolator); } - float hotseatIconsAlpha = (elements & HOTSEAT_ICONS) != 0 ? 1 : 0; - propertySetter.setViewAlpha(hotseat, hotseatIconsAlpha, fadeInterpolator); + Interpolator workspaceFadeInterpolator = config.getInterpolator(ANIM_WORKSPACE_FADE, + pageAlphaProvider.interpolator); float workspacePageIndicatorAlpha = (elements & WORKSPACE_PAGE_INDICATOR) != 0 ? 1 : 0; propertySetter.setViewAlpha(mLauncher.getWorkspace().getPageIndicator(), - workspacePageIndicatorAlpha, fadeInterpolator); + workspacePageIndicatorAlpha, workspaceFadeInterpolator); + Interpolator hotseatFadeInterpolator = config.getInterpolator(ANIM_HOTSEAT_FADE, + workspaceFadeInterpolator); + float hotseatIconsAlpha = (elements & HOTSEAT_ICONS) != 0 ? 1 : 0; + propertySetter.setViewAlpha(hotseat, hotseatIconsAlpha, hotseatFadeInterpolator); // Update the accessibility flags for hotseat based on launcher state. hotseat.setImportantForAccessibility( diff --git a/src/com/android/launcher3/anim/Interpolators.java b/src/com/android/launcher3/anim/Interpolators.java index 4ff5d5e973..7dd7494178 100644 --- a/src/com/android/launcher3/anim/Interpolators.java +++ b/src/com/android/launcher3/anim/Interpolators.java @@ -57,6 +57,11 @@ public class Interpolators { public static final Interpolator DECELERATED_EASE = new PathInterpolator(0, 0, .2f, 1f); public static final Interpolator ACCELERATED_EASE = new PathInterpolator(0.4f, 0, 1f, 1f); + public static final Interpolator EMPHASIZED_ACCELERATE = new PathInterpolator( + 0.3f, 0f, 0.8f, 0.15f); + public static final Interpolator EMPHASIZED_DECELERATE = new PathInterpolator( + 0.05f, 0.7f, 0.1f, 1f); + public static final Interpolator EXAGGERATED_EASE; public static final Interpolator INSTANT = t -> 1; diff --git a/src/com/android/launcher3/states/StateAnimationConfig.java b/src/com/android/launcher3/states/StateAnimationConfig.java index f04e685c0a..f99519d6e9 100644 --- a/src/com/android/launcher3/states/StateAnimationConfig.java +++ b/src/com/android/launcher3/states/StateAnimationConfig.java @@ -53,6 +53,7 @@ public class StateAnimationConfig { ANIM_WORKSPACE_FADE, ANIM_HOTSEAT_SCALE, ANIM_HOTSEAT_TRANSLATE, + ANIM_HOTSEAT_FADE, ANIM_OVERVIEW_SCALE, ANIM_OVERVIEW_TRANSLATE_X, ANIM_OVERVIEW_TRANSLATE_Y, @@ -72,6 +73,7 @@ public class StateAnimationConfig { public static final int ANIM_WORKSPACE_FADE = 3; public static final int ANIM_HOTSEAT_SCALE = 4; public static final int ANIM_HOTSEAT_TRANSLATE = 5; + public static final int ANIM_HOTSEAT_FADE = 16; public static final int ANIM_OVERVIEW_SCALE = 6; public static final int ANIM_OVERVIEW_TRANSLATE_X = 7; public static final int ANIM_OVERVIEW_TRANSLATE_Y = 8; @@ -83,7 +85,7 @@ public class StateAnimationConfig { public static final int ANIM_OVERVIEW_ACTIONS_FADE = 14; public static final int ANIM_WORKSPACE_PAGE_TRANSLATE_X = 15; - private static final int ANIM_TYPES_COUNT = 16; + private static final int ANIM_TYPES_COUNT = 17; protected final Interpolator[] mInterpolators = new Interpolator[ANIM_TYPES_COUNT]; diff --git a/src/com/android/launcher3/touch/AllAppsSwipeController.java b/src/com/android/launcher3/touch/AllAppsSwipeController.java index 5aac3f3a82..9d7fd9ab0f 100644 --- a/src/com/android/launcher3/touch/AllAppsSwipeController.java +++ b/src/com/android/launcher3/touch/AllAppsSwipeController.java @@ -17,11 +17,19 @@ package com.android.launcher3.touch; import static com.android.launcher3.LauncherState.ALL_APPS; import static com.android.launcher3.LauncherState.NORMAL; +import static com.android.launcher3.anim.Interpolators.DECELERATED_EASE; +import static com.android.launcher3.anim.Interpolators.EMPHASIZED_ACCELERATE; +import static com.android.launcher3.anim.Interpolators.EMPHASIZED_DECELERATE; import static com.android.launcher3.anim.Interpolators.FINAL_FRAME; import static com.android.launcher3.anim.Interpolators.INSTANT; import static com.android.launcher3.anim.Interpolators.LINEAR; import static com.android.launcher3.states.StateAnimationConfig.ANIM_ALL_APPS_FADE; +import static com.android.launcher3.states.StateAnimationConfig.ANIM_DEPTH; +import static com.android.launcher3.states.StateAnimationConfig.ANIM_HOTSEAT_FADE; +import static com.android.launcher3.states.StateAnimationConfig.ANIM_HOTSEAT_TRANSLATE; import static com.android.launcher3.states.StateAnimationConfig.ANIM_SCRIM_FADE; +import static com.android.launcher3.states.StateAnimationConfig.ANIM_VERTICAL_PROGRESS; +import static com.android.launcher3.states.StateAnimationConfig.ANIM_WORKSPACE_SCALE; import android.view.MotionEvent; import android.view.animation.Interpolator; @@ -39,11 +47,41 @@ public class AllAppsSwipeController extends AbstractStateChangeTouchController { private static final float ALLAPPS_STAGGERED_FADE_THRESHOLD = 0.5f; + // Custom timing for NORMAL -> ALL_APPS on phones only. + private static final float WORKSPACE_MOTION_START = 0.1667f; + private static final float ALL_APPS_STATE_TRANSITION = 0.305f; + private static final float ALL_APPS_FADE_END = 0.4717f; + public static final Interpolator ALLAPPS_STAGGERED_FADE_EARLY_RESPONDER = Interpolators.clampToProgress(LINEAR, 0, ALLAPPS_STAGGERED_FADE_THRESHOLD); public static final Interpolator ALLAPPS_STAGGERED_FADE_LATE_RESPONDER = Interpolators.clampToProgress(LINEAR, ALLAPPS_STAGGERED_FADE_THRESHOLD, 1f); + // Custom interpolators for NORMAL -> ALL_APPS on phones only. + public static final Interpolator BLUR = + Interpolators.clampToProgress( + EMPHASIZED_DECELERATE, WORKSPACE_MOTION_START, ALL_APPS_STATE_TRANSITION); + public static final Interpolator WORKSPACE_SCALE = + Interpolators.clampToProgress( + EMPHASIZED_DECELERATE, WORKSPACE_MOTION_START, ALL_APPS_STATE_TRANSITION); + public static final Interpolator HOTSEAT_FADE = + Interpolators.clampToProgress(FINAL_FRAME, 0f, ALL_APPS_STATE_TRANSITION); + public static final Interpolator HOTSEAT_TRANSLATE = + Interpolators.clampToProgress( + EMPHASIZED_ACCELERATE, WORKSPACE_MOTION_START, ALL_APPS_STATE_TRANSITION); + public static final Interpolator SCRIM_FADE = + Interpolators.clampToProgress( + Interpolators.mapToProgress(LINEAR, 0f, 0.8f), + WORKSPACE_MOTION_START, ALL_APPS_STATE_TRANSITION); + public static final Interpolator ALL_APPS_FADE = + Interpolators.clampToProgress( + Interpolators.mapToProgress(DECELERATED_EASE, 0.2f, 1.0f), + ALL_APPS_STATE_TRANSITION, ALL_APPS_FADE_END); + public static final Interpolator ALL_APPS_VERTICAL_PROGRESS = + Interpolators.clampToProgress( + Interpolators.mapToProgress(EMPHASIZED_DECELERATE, 0.4f, 1.0f), + ALL_APPS_STATE_TRANSITION, 1.0f); + public AllAppsSwipeController(Launcher l) { super(l, SingleAxisSwipeDetector.VERTICAL); } @@ -118,11 +156,17 @@ public class AllAppsSwipeController extends AbstractStateChangeTouchController { */ public static void applyNormalToAllAppsAnimConfig(Launcher launcher, StateAnimationConfig config) { - boolean isTablet = launcher.getDeviceProfile().isTablet; - config.setInterpolator(ANIM_SCRIM_FADE, ALLAPPS_STAGGERED_FADE_EARLY_RESPONDER); - config.setInterpolator(ANIM_ALL_APPS_FADE, isTablet - ? INSTANT : ALLAPPS_STAGGERED_FADE_LATE_RESPONDER); + if (launcher.getDeviceProfile().isTablet) { + config.setInterpolator(ANIM_SCRIM_FADE, ALLAPPS_STAGGERED_FADE_EARLY_RESPONDER); + config.setInterpolator(ANIM_ALL_APPS_FADE, INSTANT); + } else { + config.setInterpolator(ANIM_DEPTH, BLUR); + config.setInterpolator(ANIM_WORKSPACE_SCALE, WORKSPACE_SCALE); + config.setInterpolator(ANIM_HOTSEAT_FADE, HOTSEAT_FADE); + config.setInterpolator(ANIM_HOTSEAT_TRANSLATE, HOTSEAT_TRANSLATE); + config.setInterpolator(ANIM_SCRIM_FADE, SCRIM_FADE); + config.setInterpolator(ANIM_ALL_APPS_FADE, ALL_APPS_FADE); + config.setInterpolator(ANIM_VERTICAL_PROGRESS, ALL_APPS_VERTICAL_PROGRESS); + } } - - } diff --git a/src_ui_overrides/com/android/launcher3/uioverrides/states/AllAppsState.java b/src_ui_overrides/com/android/launcher3/uioverrides/states/AllAppsState.java index 52a67593ca..ec921e8f56 100644 --- a/src_ui_overrides/com/android/launcher3/uioverrides/states/AllAppsState.java +++ b/src_ui_overrides/com/android/launcher3/uioverrides/states/AllAppsState.java @@ -59,15 +59,21 @@ public class AllAppsState extends LauncherState { @Override public ScaleAndTranslation getWorkspaceScaleAndTranslation(Launcher launcher) { - ScaleAndTranslation scaleAndTranslation = - new ScaleAndTranslation(NO_SCALE, NO_OFFSET, NO_OFFSET); + return new ScaleAndTranslation(0.97f, NO_OFFSET, NO_OFFSET); + } + + @Override + public ScaleAndTranslation getHotseatScaleAndTranslation(Launcher launcher) { if (launcher.getDeviceProfile().isTablet) { - scaleAndTranslation.scale = 0.97f; + return getWorkspaceScaleAndTranslation(launcher); } else { - scaleAndTranslation.translationY = - -launcher.getAllAppsController().getShiftRange() * PARALLAX_COEFFICIENT; + ScaleAndTranslation overviewScaleAndTranslation = LauncherState.OVERVIEW + .getWorkspaceScaleAndTranslation(launcher); + return new ScaleAndTranslation( + NO_SCALE, + overviewScaleAndTranslation.translationX, + overviewScaleAndTranslation.translationY); } - return scaleAndTranslation; } @Override From 92b1c3965e9d87d73fa94eb14bdeab8329757d97 Mon Sep 17 00:00:00 2001 From: The Android Open Source Project Date: Sun, 8 May 2022 10:46:03 +0000 Subject: [PATCH 3/6] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I6320b11af2d33a1040a16afd1cf9dfb145ca0f41 --- quickstep/res/values-sl/strings.xml | 2 +- quickstep/res/values-th/strings.xml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/quickstep/res/values-sl/strings.xml b/quickstep/res/values-sl/strings.xml index d9aade77c7..e553f7eec4 100644 --- a/quickstep/res/values-sl/strings.xml +++ b/quickstep/res/values-sl/strings.xml @@ -31,7 +31,7 @@ "Danes je ostalo še %1$s" "Predlagane aplikacije" "Predvidene aplikacije" - "Oglejte si predlagane aplikacije v spodnji vrstici začetnega zaslona" + "Vklopite prikaz predlaganih aplikacij v spodnji vrstici začetnega zaslona" "Prejemajte predloge aplikacij v vrstici s priljubljenimi na začetnem zaslonu" "Preprosto dostopajte do najpogosteje uporabljenih aplikacij kar na začetnem zaslonu. Predlogi se spreminjajo na podlagi dejanj, ki jih pogosto izvajate. Aplikacije iz spodnje vrstice se premaknejo na začetni zaslon." "Preprosto dostopajte do najpogosteje uporabljenih aplikacij kar na začetnem zaslonu. Predlogi se spreminjajo na podlagi dejanj, ki jih pogosto izvajate. Aplikacije v vrstici s priljubljenimi bodo premaknjene na začetni zaslon." diff --git a/quickstep/res/values-th/strings.xml b/quickstep/res/values-th/strings.xml index 2caa53610b..27f3af1a86 100644 --- a/quickstep/res/values-th/strings.xml +++ b/quickstep/res/values-th/strings.xml @@ -33,9 +33,9 @@ "แอปที่คาดการณ์ไว้" "ดูแอปแนะนำที่แถวล่างของหน้าจอหลัก" "รับคำแนะนำเกี่ยวกับแอปในแถวรายการโปรดของหน้าจอหลัก" - "เข้าถึงแอปที่คุณใช้มากที่สุดได้อย่างง่ายดายจากหน้าจอหลัก คำแนะนำจะเปลี่ยนไปตามแอปที่ใช้งานเป็นประจำ แอปในแถวล่างจะย้ายขึ้นมาอยู่ในหน้าจอหลัก" - "เข้าถึงแอปที่ใช้มากที่สุดได้อย่างง่ายดายในหน้าจอหลัก คำแนะนำจะเปลี่ยนไปตามการใช้งานประจำ แอปในแถวรายการโปรดจะย้ายไปอยู่ในหน้าจอหลัก" - "เข้าถึงแอปที่คุณใช้มากที่สุดได้อย่างง่ายดายจากหน้าจอหลัก คำแนะนำจะเปลี่ยนไปตามแอปที่ใช้งานเป็นประจำ แอปในแถวล่างจะย้ายไปอยู่ในโฟลเดอร์ใหม่" + "เข้าถึงแอปที่คุณใช้มากที่สุดได้อย่างง่ายดายจากหน้าจอหลัก การแนะนำจะเปลี่ยนไปตามแอปที่ใช้งานเป็นประจำ แอปในแถวล่างจะย้ายขึ้นมาอยู่ในหน้าจอหลัก" + "เข้าถึงแอปที่คุณใช้มากที่สุดได้อย่างง่ายดายจากหน้าจอหลัก การแนะนำจะเปลี่ยนไปตามแอปที่ใช้งานเป็นประจำ แอปในแถวรายการโปรดจะย้ายไปอยู่ในหน้าจอหลัก" + "เข้าถึงแอปที่คุณใช้มากที่สุดได้อย่างง่ายดายจากหน้าจอหลัก การแนะนำจะเปลี่ยนไปตามแอปที่ใช้งานเป็นประจำ แอปในแถวล่างจะย้ายไปอยู่ในโฟลเดอร์ใหม่" "ดูแอปแนะนำ" "ไม่เป็นไร" "การตั้งค่า" From 23dcc290b0b7186b08d994afe5f95a8ce71ab836 Mon Sep 17 00:00:00 2001 From: The Android Open Source Project Date: Sun, 8 May 2022 10:47:03 +0000 Subject: [PATCH 4/6] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Ibaec1f87cbd2eb8bb704317d7dcfe125dfeb515d --- res/values-gl/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index b43afed8de..d669ef0a29 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -150,7 +150,7 @@ "Cambiouse o tamaño do widget polo ancho %1$s e a altura %2$s" "Atallos" "Atallos e notificacións" - "Ignorar" + "Pechar" "Pechar" "Ignorouse a notificación" "Persoal" From efff096bddab1a02a46b51b5b9522af491671c08 Mon Sep 17 00:00:00 2001 From: James O'Leary Date: Mon, 2 May 2022 16:57:32 +0000 Subject: [PATCH 5/6] Use T50 base instead of T95 Colors with custom tones were using T95 as the base color, which has very low chroma for most hues. By using T50, chroma is retained as intended by design. Bug: 213314628 Test: Manual inspection at runtime Change-Id: I8ac519ea5e65abbb34b5ea2f64268474e0e2df66 --- res/color-night-v31/all_apps_button_color_2.xml | 2 +- res/color-night-v31/folder_background_dark.xml | 2 +- res/color-night-v31/folder_preview_dark.xml | 2 +- res/color-v31/all_apps_button_bg_color.xml | 2 +- res/color-v31/all_apps_button_color_1.xml | 2 +- res/color-v31/all_apps_button_color_2.xml | 2 +- res/color-v31/all_apps_button_color_3.xml | 2 +- res/color-v31/all_apps_button_color_4.xml | 2 +- res/color-v31/folder_background_light.xml | 2 +- res/color-v31/folder_preview_light.xml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/res/color-night-v31/all_apps_button_color_2.xml b/res/color-night-v31/all_apps_button_color_2.xml index 30b972ffaa..e4005439ff 100644 --- a/res/color-night-v31/all_apps_button_color_2.xml +++ b/res/color-night-v31/all_apps_button_color_2.xml @@ -15,6 +15,6 @@ --> diff --git a/res/color-night-v31/folder_background_dark.xml b/res/color-night-v31/folder_background_dark.xml index d607395155..696e8ea67e 100644 --- a/res/color-night-v31/folder_background_dark.xml +++ b/res/color-night-v31/folder_background_dark.xml @@ -15,6 +15,6 @@ --> diff --git a/res/color-night-v31/folder_preview_dark.xml b/res/color-night-v31/folder_preview_dark.xml index a5bd6367d5..bdd48a24bd 100644 --- a/res/color-night-v31/folder_preview_dark.xml +++ b/res/color-night-v31/folder_preview_dark.xml @@ -15,6 +15,6 @@ --> diff --git a/res/color-v31/all_apps_button_bg_color.xml b/res/color-v31/all_apps_button_bg_color.xml index 3ad38bc697..89590207d5 100644 --- a/res/color-v31/all_apps_button_bg_color.xml +++ b/res/color-v31/all_apps_button_bg_color.xml @@ -15,6 +15,6 @@ --> diff --git a/res/color-v31/all_apps_button_color_1.xml b/res/color-v31/all_apps_button_color_1.xml index 2d0895e4d8..71c7d8dc49 100644 --- a/res/color-v31/all_apps_button_color_1.xml +++ b/res/color-v31/all_apps_button_color_1.xml @@ -15,6 +15,6 @@ --> diff --git a/res/color-v31/all_apps_button_color_2.xml b/res/color-v31/all_apps_button_color_2.xml index 7674b432b5..608c8a929b 100644 --- a/res/color-v31/all_apps_button_color_2.xml +++ b/res/color-v31/all_apps_button_color_2.xml @@ -15,6 +15,6 @@ --> diff --git a/res/color-v31/all_apps_button_color_3.xml b/res/color-v31/all_apps_button_color_3.xml index 17cb54f721..dbb97b13b2 100644 --- a/res/color-v31/all_apps_button_color_3.xml +++ b/res/color-v31/all_apps_button_color_3.xml @@ -15,6 +15,6 @@ --> diff --git a/res/color-v31/all_apps_button_color_4.xml b/res/color-v31/all_apps_button_color_4.xml index a6150f13f4..d02528f638 100644 --- a/res/color-v31/all_apps_button_color_4.xml +++ b/res/color-v31/all_apps_button_color_4.xml @@ -15,6 +15,6 @@ --> diff --git a/res/color-v31/folder_background_light.xml b/res/color-v31/folder_background_light.xml index e3c7e7dab1..eb2fdd7367 100644 --- a/res/color-v31/folder_background_light.xml +++ b/res/color-v31/folder_background_light.xml @@ -15,6 +15,6 @@ --> diff --git a/res/color-v31/folder_preview_light.xml b/res/color-v31/folder_preview_light.xml index fe30c87202..ed1205ebb9 100644 --- a/res/color-v31/folder_preview_light.xml +++ b/res/color-v31/folder_preview_light.xml @@ -15,6 +15,6 @@ --> From c70f286a9f320643eaa3bc948d09aa3ef3c4289b Mon Sep 17 00:00:00 2001 From: Becky Qiu Date: Thu, 5 May 2022 15:11:50 -0700 Subject: [PATCH 6/6] [Toast] Keep keyboard up for query builder tapping Bug: 228998087 Test: manual Change-Id: Idf40d79e4a8929f23a91461959576840577bf005 --- src/com/android/launcher3/allapps/AllAppsRecyclerView.java | 4 ++-- .../android/launcher3/allapps/BaseAllAppsContainerView.java | 5 +++++ .../android/launcher3/views/RecyclerViewFastScroller.java | 5 +++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java index bdfeada07c..096e2c8d35 100644 --- a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java +++ b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java @@ -228,6 +228,8 @@ public class AllAppsRecyclerView extends BaseRecyclerView { requestFocus(); mgr.logger().sendToInteractionJankMonitor( LAUNCHER_ALLAPPS_VERTICAL_SWIPE_BEGIN, this); + hideKeyboardAsync(ActivityContext.lookupContext(getContext()), + getApplicationWindowToken()); break; case SCROLL_STATE_IDLE: mgr.logger().sendToInteractionJankMonitor( @@ -243,8 +245,6 @@ public class AllAppsRecyclerView extends BaseRecyclerView { && mEmptySearchBackground != null && mEmptySearchBackground.getAlpha() > 0) { mEmptySearchBackground.setHotspot(e.getX(), e.getY()); } - hideKeyboardAsync(ActivityContext.lookupContext(getContext()), - getApplicationWindowToken()); return result; } diff --git a/src/com/android/launcher3/allapps/BaseAllAppsContainerView.java b/src/com/android/launcher3/allapps/BaseAllAppsContainerView.java index 72ca5a7db4..95c67ddaa8 100644 --- a/src/com/android/launcher3/allapps/BaseAllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/BaseAllAppsContainerView.java @@ -17,6 +17,7 @@ package com.android.launcher3.allapps; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_TAP_ON_PERSONAL_TAB; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_TAP_ON_WORK_TAB; +import static com.android.launcher3.util.UiThreadHelper.hideKeyboardAsync; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; @@ -458,6 +459,8 @@ public abstract class BaseAllAppsContainerView { @@ -465,6 +468,8 @@ public abstract class BaseAllAppsContainerView