stop using hardware layers when workspace stops moving
helps workaround Bug 3417254
Change-Id: I874e5e52ab544fbb787e1021d6ee394e8f3a34d6
diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java
index 6138b86..c018cf1 100644
--- a/src/com/android/launcher2/PagedView.java
+++ b/src/com/android/launcher2/PagedView.java
@@ -273,12 +273,12 @@
}
}
- 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 2800b02..212ee09 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -306,10 +306,15 @@
}
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);
mAnimator = null;
@@ -1253,6 +1258,25 @@
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;