summaryrefslogtreecommitdiff
path: root/src/com/android/launcher3/pageindicators
diff options
context:
space:
mode:
authorfbaron <fbaron@google.com>2023-11-01 13:17:50 -0700
committerfbaron <fbaron@google.com>2023-11-01 14:19:07 -0700
commit95ed863d9687830ed896fdc4ce13edb7e8f1fad6 (patch)
treef6ad016f53dab6ebadc8547d9924722cdf3dd4c9 /src/com/android/launcher3/pageindicators
parent821bc0d034d9e609b903d70543dbf8eb8aa30bb1 (diff)
downloadLauncher3-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.java2
-rw-r--r--src/com/android/launcher3/pageindicators/PageIndicatorDots.java13
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);