diff options
author | fbaron <fbaron@google.com> | 2023-11-01 13:17:50 -0700 |
---|---|---|
committer | fbaron <fbaron@google.com> | 2023-11-01 14:19:07 -0700 |
commit | 95ed863d9687830ed896fdc4ce13edb7e8f1fad6 (patch) | |
tree | f6ad016f53dab6ebadc8547d9924722cdf3dd4c9 /src/com/android/launcher3/pageindicators | |
parent | 821bc0d034d9e609b903d70543dbf8eb8aa30bb1 (diff) | |
download | Launcher3-95ed863d9687830ed896fdc4ce13edb7e8f1fad6.tar.gz |
Fix page indicator bugs for foldable
There are bugs when unfolding the felix device where the page indicator will appear in the wrong place, and have to animate all the way back to where it should go. This was originally fixed with ag/24399441 but it seems that the issue is still happening when flag FOLDABLE_SINGLE_PAGE is off. Here we fix that issue..
Fix: 294231977
Fix: 291822492
Flag: NONE
Test: n/a
Change-Id: I6ae97ebbb034f5b520a4f5ace729b44b89ea73a0
Diffstat (limited to 'src/com/android/launcher3/pageindicators')
-rw-r--r-- | src/com/android/launcher3/pageindicators/PageIndicator.java | 2 | ||||
-rw-r--r-- | src/com/android/launcher3/pageindicators/PageIndicatorDots.java | 13 |
2 files changed, 13 insertions, 2 deletions
diff --git a/src/com/android/launcher3/pageindicators/PageIndicator.java b/src/com/android/launcher3/pageindicators/PageIndicator.java index 4ab20373b4..30156c8140 100644 --- a/src/com/android/launcher3/pageindicators/PageIndicator.java +++ b/src/com/android/launcher3/pageindicators/PageIndicator.java @@ -30,7 +30,7 @@ public interface PageIndicator { * Sets flag to indicate when the screens are in the process of binding so that we don't animate * during that period. */ - default void setAreScreensBinding(boolean areScreensBinding) { + default void setAreScreensBinding(boolean areScreensBinding, boolean isTwoPanels) { // No-op by default } diff --git a/src/com/android/launcher3/pageindicators/PageIndicatorDots.java b/src/com/android/launcher3/pageindicators/PageIndicatorDots.java index 323b3a79a9..fd1b64faf9 100644 --- a/src/com/android/launcher3/pageindicators/PageIndicatorDots.java +++ b/src/com/android/launcher3/pageindicators/PageIndicatorDots.java @@ -16,6 +16,8 @@ package com.android.launcher3.pageindicators; +import static com.android.launcher3.config.FeatureFlags.FOLDABLE_SINGLE_PAGE; + import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; @@ -129,6 +131,7 @@ public class PageIndicatorDots extends View implements Insettable, PageIndicator private float mCurrentPosition; private float mFinalPosition; private boolean mAreScreensBinding; + private boolean mIsTwoPanels; private ObjectAnimator mAnimator; private @Nullable ObjectAnimator mAlphaAnimator; @@ -348,6 +351,12 @@ public class PageIndicatorDots extends View implements Insettable, PageIndicator @Override public void setActiveMarker(int activePage) { + // In unfolded foldables, every page has two CellLayouts, so we need to halve the active + // page for it to be accurate. + if (mIsTwoPanels && !FOLDABLE_SINGLE_PAGE.get()) { + activePage = activePage / 2; + } + if (mActivePage != activePage) { mActivePage = activePage; } @@ -360,7 +369,9 @@ public class PageIndicatorDots extends View implements Insettable, PageIndicator } @Override - public void setAreScreensBinding(boolean areScreensBinding) { + public void setAreScreensBinding(boolean areScreensBinding, boolean isTwoPanels) { + mIsTwoPanels = isTwoPanels; + // Reapply correct current position which was skipped during setScroll. if (mAreScreensBinding && !areScreensBinding) { CURRENT_POSITION.set(this, (float) mActivePage); |