From e2e1509d55e6b51145edca13e49767a1457fe3b2 Mon Sep 17 00:00:00 2001 From: Alex Chau Date: Fri, 20 May 2022 13:32:10 +0100 Subject: Fix taskbar icon flicker and jump when transforming to hotseat - Apply additional translation on TaskbarView to account for difference between taskbar icon to bottom spacing compared to hotseat icon to bottom spacing - Call updateIconAlignment outside of synchronizeNextDraw's then block, which get run after the synchronization Bug: 204850744 Test: manual Change-Id: Id65842f506eb342105082649446eb694cd5c33a4 (cherry picked from commit 51da2198691ba2b60a488a05efafcb03da3f7c8e) Merged-In: Id65842f506eb342105082649446eb694cd5c33a4 --- .../launcher3/taskbar/TaskbarLauncherStateController.java | 12 +++--------- .../android/launcher3/taskbar/TaskbarViewController.java | 14 +++----------- 2 files changed, 6 insertions(+), 20 deletions(-) (limited to 'quickstep') diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java index 052c695ff4..dc0ef27ba1 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java @@ -30,7 +30,6 @@ import androidx.annotation.Nullable; import com.android.launcher3.AbstractFloatingView; import com.android.launcher3.BaseQuickstepLauncher; -import com.android.launcher3.DeviceProfile; import com.android.launcher3.LauncherState; import com.android.launcher3.Utilities; import com.android.launcher3.statemanager.StateManager; @@ -407,18 +406,13 @@ import java.util.function.Supplier; boolean firstFrameVisChanged = (taskbarWillBeVisible && Float.compare(currentValue, 1) != 0) || (!taskbarWillBeVisible && Float.compare(currentValue, 0) != 0); + updateIconAlignment(alignment); + // Sync the first frame where we swap taskbar and hotseat. if (firstFrameVisChanged && mCanSyncViews && !Utilities.IS_RUNNING_IN_TEST_HARNESS) { - DeviceProfile dp = mLauncher.getDeviceProfile(); - - // Do all the heavy work before the sync. - mControllers.taskbarViewController.createIconAlignmentControllerIfNotExists(dp); - ViewRootSync.synchronizeNextDraw(mLauncher.getHotseat(), mControllers.taskbarActivityContext.getDragLayer(), - () -> updateIconAlignment(alignment)); - } else { - updateIconAlignment(alignment); + () -> {}); } } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java index 3dd7932a9a..3562f5bc3c 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java @@ -204,16 +204,6 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar )); } - /** - * Creates the icon alignment controller if it does not already exist. - * @param launcherDp Launcher device profile. - */ - public void createIconAlignmentControllerIfNotExists(DeviceProfile launcherDp) { - if (mIconAlignControllerLazy == null) { - mIconAlignControllerLazy = createIconAlignmentController(launcherDp); - } - } - /** * Sets the taskbar icon alignment relative to Launcher hotseat icons * @param alignmentRatio [0, 1] @@ -221,7 +211,9 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar * 1 => fully aligned */ public void setLauncherIconAlignment(float alignmentRatio, DeviceProfile launcherDp) { - createIconAlignmentControllerIfNotExists(launcherDp); + if (mIconAlignControllerLazy == null) { + mIconAlignControllerLazy = createIconAlignmentController(launcherDp); + } mIconAlignControllerLazy.setPlayFraction(alignmentRatio); if (alignmentRatio <= 0 || alignmentRatio >= 1) { // Cleanup lazy controller so that it is created again in next animation -- cgit v1.2.3