diff options
author | Chris Craik <ccraik@google.com> | 2013-10-01 14:41:56 -0700 |
---|---|---|
committer | Chris Craik <ccraik@google.com> | 2013-10-01 15:07:17 -0700 |
commit | 01f2d7fa4b24b21543012060305d693899b4beaa (patch) | |
tree | 54d224b4d6bf9333fdd274ed816cb3a594e2fddb | |
parent | 9cfd586305826bb1da725cfd6956cf201195e692 (diff) | |
download | android_packages_apps_Trebuchet-01f2d7fa4b24b21543012060305d693899b4beaa.tar.gz android_packages_apps_Trebuchet-01f2d7fa4b24b21543012060305d693899b4beaa.tar.bz2 android_packages_apps_Trebuchet-01f2d7fa4b24b21543012060305d693899b4beaa.zip |
Disable hardware layer on custom screen
Whereas standard ShortcutAndWidgetContainers are static during screen
transition, the custom screen may animate during its transition.
Disabling the hardware layer reduces the cost of this animation
significantly.
bug:10810505
Change-Id: I560d209f651951f54c224862a706e8a243dc71af
-rw-r--r-- | src/com/android/launcher3/CellLayout.java | 8 | ||||
-rw-r--r-- | src/com/android/launcher3/Workspace.java | 21 |
2 files changed, 12 insertions, 17 deletions
diff --git a/src/com/android/launcher3/CellLayout.java b/src/com/android/launcher3/CellLayout.java index 81f9af2e1..72a6ce2e1 100644 --- a/src/com/android/launcher3/CellLayout.java +++ b/src/com/android/launcher3/CellLayout.java @@ -296,12 +296,8 @@ public class CellLayout extends ViewGroup { addView(mShortcutsAndWidgets); } - public void enableHardwareLayers() { - mShortcutsAndWidgets.setLayerType(LAYER_TYPE_HARDWARE, sPaint); - } - - public void disableHardwareLayers() { - mShortcutsAndWidgets.setLayerType(LAYER_TYPE_NONE, sPaint); + public void enableHardwareLayer(boolean hasLayer) { + mShortcutsAndWidgets.setLayerType(hasLayer ? LAYER_TYPE_HARDWARE : LAYER_TYPE_NONE, sPaint); } public void buildHardwareLayer() { diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index ea348ef8a..82b10fee8 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -1046,7 +1046,7 @@ public class Workspace extends SmoothPagedView mLauncher.updateVoiceButtonProxyVisible(false); } } - }; + } protected void setWallpaperDimension() { String spKey = WallpaperCropActivity.getSharedPreferencesKey(); @@ -1572,7 +1572,7 @@ public class Workspace extends SmoothPagedView } else { for (int i = 0; i < getPageCount(); i++) { final CellLayout cl = (CellLayout) getChildAt(i); - cl.disableHardwareLayers(); + cl.enableHardwareLayer(false); } } } @@ -1592,17 +1592,16 @@ public class Workspace extends SmoothPagedView leftScreen--; } } + + final CellLayout customScreen = mWorkspaceScreens.get(CUSTOM_CONTENT_SCREEN_ID); for (int i = 0; i < screenCount; 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) getPageAt(i); - if (leftScreen <= i && i <= rightScreen && shouldDrawChild(layout)) { - layout.enableHardwareLayers(); - } + + // enable layers between left and right screen inclusive, except for the + // customScreen, which may animate its content during transitions. + boolean enableLayer = layout != customScreen && + leftScreen <= i && i <= rightScreen && shouldDrawChild(layout); + layout.enableHardwareLayer(enableLayer); } } } |