From 5e368ffbad2fb08e3eadab98eeefd4e1d05bdb2b Mon Sep 17 00:00:00 2001 From: Michael Jurka Date: Mon, 14 May 2012 23:13:15 -0700 Subject: [PATCH] Solve stutter when swiping All Apps the first time Bug: 6024062 Change-Id: I6e05e9916389b1d90bd59443a04720fbf2338f5e --- src/com/android/launcher2/AppsCustomizePagedView.java | 3 ++- src/com/android/launcher2/PagedView.java | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java index 5c91d35ccd..8aaa2d9df8 100644 --- a/src/com/android/launcher2/AppsCustomizePagedView.java +++ b/src/com/android/launcher2/AppsCustomizePagedView.java @@ -811,6 +811,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen onSyncWidgetPageItems(d); } mDeferredSyncWidgetPageItems.clear(); + mForceDrawAllChildrenNextFrame = !toWorkspace; } @Override @@ -1514,7 +1515,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen @Override protected void onPageEndMoving() { super.onPageEndMoving(); - + mForceDrawAllChildrenNextFrame = true; // We reset the save index when we change pages so that it will be recalculated on next // rotation mSaveInstanceStateItemIndex = -1; diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java index 5d9cf81eb9..a9603acb04 100644 --- a/src/com/android/launcher2/PagedView.java +++ b/src/com/android/launcher2/PagedView.java @@ -133,6 +133,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc protected boolean mAllowOverScroll = true; protected int mUnboundedScrollX; protected int[] mTempVisiblePagesRange = new int[2]; + protected boolean mForceDrawAllChildrenNextFrame; // mOverScrollX is equal to getScrollX() when we're within the normal scroll range. Otherwise // it is equal to the scaled overscroll position. We use a separate value so as to prevent @@ -796,13 +797,15 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc // View.INVISIBLE, preventing re-drawing of their hardware layer for (int i = getChildCount() - 1; i >= 0; i--) { final View v = getPageAt(i); - if (leftScreen <= i && i <= rightScreen && shouldDrawChild(v)) { + if (mForceDrawAllChildrenNextFrame || + (leftScreen <= i && i <= rightScreen && shouldDrawChild(v))) { v.setVisibility(VISIBLE); drawChild(canvas, v, drawingTime); } else { v.setVisibility(INVISIBLE); } } + mForceDrawAllChildrenNextFrame = false; canvas.restore(); } }