summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Jurka <mikejurka@google.com>2013-01-14 12:42:27 +0100
committerMichael Jurka <mikejurka@google.com>2013-01-17 10:38:15 +0100
commit47639b9c1db9a5d0d89ce6b4b36d6b3c0d489602 (patch)
tree3483dff311f5e429b38109f32512e7a843fb152f /src
parentffc9f488a31b99248c27977c53d3b5f731f590e7 (diff)
downloadandroid_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')
-rw-r--r--src/com/android/launcher2/AppsCustomizePagedView.java49
-rw-r--r--src/com/android/launcher2/PagedViewCellLayout.java13
-rw-r--r--src/com/android/launcher2/PagedViewGridLayout.java10
-rw-r--r--src/com/android/launcher2/Workspace.java4
4 files changed, 50 insertions, 26 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) {
diff --git a/src/com/android/launcher2/PagedViewCellLayout.java b/src/com/android/launcher2/PagedViewCellLayout.java
index 6f73e6341..9ce177b76 100644
--- a/src/com/android/launcher2/PagedViewCellLayout.java
+++ b/src/com/android/launcher2/PagedViewCellLayout.java
@@ -86,17 +86,6 @@ public class PagedViewCellLayout extends ViewGroup implements Page {
return mCellHeight;
}
- void destroyHardwareLayers() {
- // called when a page is no longer visible (triggered by loadAssociatedPages ->
- // removeAllViewsOnPage)
- setLayerType(LAYER_TYPE_NONE, null);
- }
-
- void createHardwareLayers() {
- // called when a page is visible (triggered by loadAssociatedPages -> syncPageItems)
- setLayerType(LAYER_TYPE_HARDWARE, null);
- }
-
@Override
public void cancelLongPress() {
super.cancelLongPress();
@@ -133,7 +122,7 @@ public class PagedViewCellLayout extends ViewGroup implements Page {
@Override
public void removeAllViewsOnPage() {
mChildren.removeAllViews();
- destroyHardwareLayers();
+ setLayerType(LAYER_TYPE_NONE, null);
}
@Override
diff --git a/src/com/android/launcher2/PagedViewGridLayout.java b/src/com/android/launcher2/PagedViewGridLayout.java
index 90bfe88ec..aa9adc0ea 100644
--- a/src/com/android/launcher2/PagedViewGridLayout.java
+++ b/src/com/android/launcher2/PagedViewGridLayout.java
@@ -98,19 +98,11 @@ public class PagedViewGridLayout extends GridLayout implements Page {
return result;
}
- void destroyHardwareLayer() {
- setLayerType(LAYER_TYPE_NONE, null);
- }
-
- void createHardwareLayer() {
- setLayerType(LAYER_TYPE_HARDWARE, null);
- }
-
@Override
public void removeAllViewsOnPage() {
removeAllViews();
mOnLayoutListener = null;
- destroyHardwareLayer();
+ setLayerType(LAYER_TYPE_NONE, null);
}
@Override
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index 2c44aca07..9d8845b2c 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -1406,13 +1406,13 @@ public class Workspace extends SmoothPagedView
}
}
for (int i = 0; i < screenCount; i++) {
- final CellLayout layout = (CellLayout) getChildAt(i);
+ final CellLayout layout = (CellLayout) getPageAt(i);
if (!(leftScreen <= i && i <= rightScreen && shouldDrawChild(layout))) {
layout.disableHardwareLayers();
}
}
for (int i = 0; i < screenCount; i++) {
- final CellLayout layout = (CellLayout) getChildAt(i);
+ final CellLayout layout = (CellLayout) getPageAt(i);
if (leftScreen <= i && i <= rightScreen && shouldDrawChild(layout)) {
layout.enableHardwareLayers();
}