Loading src/com/android/launcher3/Launcher.java +3 −2 Original line number Original line Diff line number Diff line Loading @@ -2325,6 +2325,7 @@ public class Launcher extends StatefulActivity<LauncherState> @Override @Override public void bindScreens(IntArray orderedScreenIds) { public void bindScreens(IntArray orderedScreenIds) { mWorkspace.mPageIndicator.setAreScreensBinding(true); int firstScreenPosition = 0; int firstScreenPosition = 0; if (FeatureFlags.QSB_ON_FIRST_SCREEN && if (FeatureFlags.QSB_ON_FIRST_SCREEN && orderedScreenIds.indexOf(Workspace.FIRST_SCREEN_ID) != firstScreenPosition) { orderedScreenIds.indexOf(Workspace.FIRST_SCREEN_ID) != firstScreenPosition) { Loading Loading @@ -2822,8 +2823,8 @@ public class Launcher extends StatefulActivity<LauncherState> getViewCache().setCacheSize(R.layout.folder_page, 2); getViewCache().setCacheSize(R.layout.folder_page, 2); TraceHelper.INSTANCE.endSection(); TraceHelper.INSTANCE.endSection(); mWorkspace.removeExtraEmptyScreen(/* stripEmptyScreens= */ true); mWorkspace.removeExtraEmptyScreen(true); mWorkspace.mPageIndicator.setAreScreensBinding(false); } } private boolean canAnimatePageChange() { private boolean canAnimatePageChange() { Loading src/com/android/launcher3/pageindicators/PageIndicator.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -26,6 +26,14 @@ public interface PageIndicator { void setMarkersCount(int numMarkers); void setMarkersCount(int numMarkers); /** * 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) { // No-op by default } /** /** * Sets the flag if the Page Indicator should autohide. * Sets the flag if the Page Indicator should autohide. */ */ Loading src/com/android/launcher3/pageindicators/PageIndicatorDots.java +17 −1 Original line number Original line Diff line number Diff line Loading @@ -130,6 +130,7 @@ public class PageIndicatorDots extends View implements Insettable, PageIndicator */ */ private float mCurrentPosition; private float mCurrentPosition; private float mFinalPosition; private float mFinalPosition; private boolean mAreScreensBinding; private ObjectAnimator mAnimator; private ObjectAnimator mAnimator; private @Nullable ObjectAnimator mAlphaAnimator; private @Nullable ObjectAnimator mAlphaAnimator; Loading Loading @@ -163,7 +164,7 @@ public class PageIndicatorDots extends View implements Insettable, PageIndicator @Override @Override public void setScroll(int currentScroll, int totalScroll) { public void setScroll(int currentScroll, int totalScroll) { if (SHOW_DOT_PAGINATION.get() && mActivePage != 0 && currentScroll == 0) { if (SHOW_DOT_PAGINATION.get() && currentScroll == 0 && totalScroll == 0) { CURRENT_POSITION.set(this, (float) mActivePage); CURRENT_POSITION.set(this, (float) mActivePage); return; return; } } Loading @@ -172,6 +173,11 @@ public class PageIndicatorDots extends View implements Insettable, PageIndicator return; return; } } // Skip scroll update during binding. We will update it when binding completes. if (mAreScreensBinding) { return; } if (mShouldAutoHide) { if (mShouldAutoHide) { animatePaginationToAlpha(VISIBLE_ALPHA); animatePaginationToAlpha(VISIBLE_ALPHA); } } Loading Loading @@ -358,6 +364,16 @@ public class PageIndicatorDots extends View implements Insettable, PageIndicator requestLayout(); requestLayout(); } } @Override public void setAreScreensBinding(boolean areScreensBinding) { // Reapply correct current position which was skipped during setScroll. if (mAreScreensBinding && !areScreensBinding) { CURRENT_POSITION.set(this, (float) mActivePage); } mAreScreensBinding = areScreensBinding; } @Override @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // Add extra spacing of mDotRadius on all sides so than entry animation could be run. // Add extra spacing of mDotRadius on all sides so than entry animation could be run. Loading Loading
src/com/android/launcher3/Launcher.java +3 −2 Original line number Original line Diff line number Diff line Loading @@ -2325,6 +2325,7 @@ public class Launcher extends StatefulActivity<LauncherState> @Override @Override public void bindScreens(IntArray orderedScreenIds) { public void bindScreens(IntArray orderedScreenIds) { mWorkspace.mPageIndicator.setAreScreensBinding(true); int firstScreenPosition = 0; int firstScreenPosition = 0; if (FeatureFlags.QSB_ON_FIRST_SCREEN && if (FeatureFlags.QSB_ON_FIRST_SCREEN && orderedScreenIds.indexOf(Workspace.FIRST_SCREEN_ID) != firstScreenPosition) { orderedScreenIds.indexOf(Workspace.FIRST_SCREEN_ID) != firstScreenPosition) { Loading Loading @@ -2822,8 +2823,8 @@ public class Launcher extends StatefulActivity<LauncherState> getViewCache().setCacheSize(R.layout.folder_page, 2); getViewCache().setCacheSize(R.layout.folder_page, 2); TraceHelper.INSTANCE.endSection(); TraceHelper.INSTANCE.endSection(); mWorkspace.removeExtraEmptyScreen(/* stripEmptyScreens= */ true); mWorkspace.removeExtraEmptyScreen(true); mWorkspace.mPageIndicator.setAreScreensBinding(false); } } private boolean canAnimatePageChange() { private boolean canAnimatePageChange() { Loading
src/com/android/launcher3/pageindicators/PageIndicator.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -26,6 +26,14 @@ public interface PageIndicator { void setMarkersCount(int numMarkers); void setMarkersCount(int numMarkers); /** * 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) { // No-op by default } /** /** * Sets the flag if the Page Indicator should autohide. * Sets the flag if the Page Indicator should autohide. */ */ Loading
src/com/android/launcher3/pageindicators/PageIndicatorDots.java +17 −1 Original line number Original line Diff line number Diff line Loading @@ -130,6 +130,7 @@ public class PageIndicatorDots extends View implements Insettable, PageIndicator */ */ private float mCurrentPosition; private float mCurrentPosition; private float mFinalPosition; private float mFinalPosition; private boolean mAreScreensBinding; private ObjectAnimator mAnimator; private ObjectAnimator mAnimator; private @Nullable ObjectAnimator mAlphaAnimator; private @Nullable ObjectAnimator mAlphaAnimator; Loading Loading @@ -163,7 +164,7 @@ public class PageIndicatorDots extends View implements Insettable, PageIndicator @Override @Override public void setScroll(int currentScroll, int totalScroll) { public void setScroll(int currentScroll, int totalScroll) { if (SHOW_DOT_PAGINATION.get() && mActivePage != 0 && currentScroll == 0) { if (SHOW_DOT_PAGINATION.get() && currentScroll == 0 && totalScroll == 0) { CURRENT_POSITION.set(this, (float) mActivePage); CURRENT_POSITION.set(this, (float) mActivePage); return; return; } } Loading @@ -172,6 +173,11 @@ public class PageIndicatorDots extends View implements Insettable, PageIndicator return; return; } } // Skip scroll update during binding. We will update it when binding completes. if (mAreScreensBinding) { return; } if (mShouldAutoHide) { if (mShouldAutoHide) { animatePaginationToAlpha(VISIBLE_ALPHA); animatePaginationToAlpha(VISIBLE_ALPHA); } } Loading Loading @@ -358,6 +364,16 @@ public class PageIndicatorDots extends View implements Insettable, PageIndicator requestLayout(); requestLayout(); } } @Override public void setAreScreensBinding(boolean areScreensBinding) { // Reapply correct current position which was skipped during setScroll. if (mAreScreensBinding && !areScreensBinding) { CURRENT_POSITION.set(this, (float) mActivePage); } mAreScreensBinding = areScreensBinding; } @Override @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // Add extra spacing of mDotRadius on all sides so than entry animation could be run. // Add extra spacing of mDotRadius on all sides so than entry animation could be run. Loading