diff options
author | Michael Jurka <mikejurka@google.com> | 2013-01-14 12:42:27 +0100 |
---|---|---|
committer | Michael Jurka <mikejurka@google.com> | 2013-01-17 10:38:15 +0100 |
commit | 47639b9c1db9a5d0d89ce6b4b36d6b3c0d489602 (patch) | |
tree | 3483dff311f5e429b38109f32512e7a843fb152f /src/com/android/launcher2/AppsCustomizePagedView.java | |
parent | ffc9f488a31b99248c27977c53d3b5f731f590e7 (diff) | |
download | android_packages_apps_Trebuchet-47639b9c1db9a5d0d89ce6b4b36d6b3c0d489602.tar.gz android_packages_apps_Trebuchet-47639b9c1db9a5d0d89ce6b4b36d6b3c0d489602.tar.bz2 android_packages_apps_Trebuchet-47639b9c1db9a5d0d89ce6b4b36d6b3c0d489602.zip |
Use less HW layers in All Apps
(saves memory)
Change-Id: Ib2beda7549662a787437c7aa043e7858357c051f
Diffstat (limited to 'src/com/android/launcher2/AppsCustomizePagedView.java')
-rw-r--r-- | src/com/android/launcher2/AppsCustomizePagedView.java | 49 |
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) { |