summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher2/AppsCustomizePagedView.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher2/AppsCustomizePagedView.java')
-rw-r--r--src/com/android/launcher2/AppsCustomizePagedView.java49
1 files changed, 46 insertions, 3 deletions
diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java
index 4bfeb60b8..e36eee29a 100644
--- a/src/com/android/launcher2/AppsCustomizePagedView.java
+++ b/src/com/android/launcher2/AppsCustomizePagedView.java
@@ -1099,7 +1099,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
images.add(info.iconBitmap);
}
- layout.createHardwareLayers();
+ enableHwLayersOnVisiblePages();
}
/**
@@ -1552,8 +1552,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
}
}
- layout.createHardwareLayer();
- invalidate();
+ enableHwLayersOnVisiblePages();
// Update all thread priorities
Iterator<AppsCustomizeAsyncTask> iter = mRunningTasks.iterator();
@@ -1676,6 +1675,50 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
}
}
}
+
+ enableHwLayersOnVisiblePages();
+ }
+
+ private void enableHwLayersOnVisiblePages() {
+ final int screenCount = getChildCount();
+
+ getVisiblePages(mTempVisiblePagesRange);
+ int leftScreen = mTempVisiblePagesRange[0];
+ int rightScreen = mTempVisiblePagesRange[1];
+ int forceDrawScreen = -1;
+ if (leftScreen == rightScreen) {
+ // make sure we're caching at least two pages always
+ if (rightScreen < screenCount - 1) {
+ rightScreen++;
+ forceDrawScreen = rightScreen;
+ } else if (leftScreen > 0) {
+ leftScreen--;
+ forceDrawScreen = leftScreen;
+ }
+ } else {
+ forceDrawScreen = leftScreen + 1;
+ }
+
+ for (int i = 0; i < screenCount; i++) {
+ final View layout = (View) getPageAt(i);
+ if (!(leftScreen <= i && i <= rightScreen &&
+ (i == forceDrawScreen || shouldDrawChild(layout)))) {
+ layout.setLayerType(LAYER_TYPE_NONE, null);
+ }
+ }
+
+ int newLeft = -1;
+ int newRight = -1;
+ for (int i = 0; i < screenCount; i++) {
+ final View layout = (View) getPageAt(i);
+
+ if (leftScreen <= i && i <= rightScreen &&
+ (i == forceDrawScreen || shouldDrawChild(layout))) {
+ if (layout.getLayerType() != LAYER_TYPE_HARDWARE) {
+ layout.setLayerType(LAYER_TYPE_HARDWARE, null);
+ }
+ }
+ }
}
protected void overScroll(float amount) {