From ce7e05fbe8abd5f25ec47e0e05b5cc76ceb39d2e Mon Sep 17 00:00:00 2001 From: Michael Jurka Date: Tue, 1 Feb 2011 22:02:35 -0800 Subject: [PATCH] stop using hardware layers when workspace stops moving helps workaround Bug 3417254 Change-Id: I874e5e52ab544fbb787e1021d6ee394e8f3a34d6 --- src/com/android/launcher2/PagedView.java | 4 ++-- src/com/android/launcher2/Workspace.java | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java index 6138b868fa..c018cf1fac 100644 --- a/src/com/android/launcher2/PagedView.java +++ b/src/com/android/launcher2/PagedView.java @@ -273,12 +273,12 @@ public abstract class PagedView extends ViewGroup { } } - private void pageBeginMoving() { + protected void pageBeginMoving() { mIsPageMoving = true; onPageBeginMoving(); } - private void pageEndMoving() { + protected void pageEndMoving() { onPageEndMoving(); mIsPageMoving = false; } diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java index 2800b02a57..212ee096c6 100644 --- a/src/com/android/launcher2/Workspace.java +++ b/src/com/android/launcher2/Workspace.java @@ -306,9 +306,14 @@ public class Workspace extends SmoothPagedView } mWallpaperOffset.setOverrideHorizontalCatchupConstant(false); mAnimator = null; + enableChildrenLayers(false); } }; mShrinkAnimationListener = new AnimatorListenerAdapter() { + @Override + public void onAnimationStart(Animator animation) { + enableChildrenLayers(true); + } @Override public void onAnimationEnd(Animator animation) { mWallpaperOffset.setOverrideHorizontalCatchupConstant(false); @@ -1253,6 +1258,25 @@ public class Workspace extends SmoothPagedView return super.onTouchEvent(ev); } + protected void enableChildrenLayers(boolean enable) { + for (int i = 0; i < getPageCount(); i++) { + setChildrenLayersEnabled(enable); + } + } + @Override + protected void pageBeginMoving() { + enableChildrenLayers(true); + super.pageBeginMoving(); + } + + @Override + protected void pageEndMoving() { + if (!mIsSmall && !mIsInUnshrinkAnimation) { + enableChildrenLayers(false); + } + super.pageEndMoving(); + } + @Override protected void onWallpaperTap(MotionEvent ev) { final int[] position = mTempCell;