Use less HW layers in All Apps
(saves memory) Change-Id: Ib2beda7549662a787437c7aa043e7858357c051f
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user