diff options
author | Michael Jurka <mikejurka@google.com> | 2014-01-29 16:32:39 +0100 |
---|---|---|
committer | Michael Jurka <mikejurka@google.com> | 2014-01-30 14:21:09 +0100 |
commit | 2a4f4928a964fa8eef9ea6542f835ad4a79b9bd5 (patch) | |
tree | cfd1059c29aeb8afd7bb983c8b45996c37a0ed89 /src/com/android | |
parent | d805837a877bb503d7890c4f92cfd183dec8c5ee (diff) | |
download | android_packages_apps_Trebuchet-2a4f4928a964fa8eef9ea6542f835ad4a79b9bd5.tar.gz android_packages_apps_Trebuchet-2a4f4928a964fa8eef9ea6542f835ad4a79b9bd5.tar.bz2 android_packages_apps_Trebuchet-2a4f4928a964fa8eef9ea6542f835ad4a79b9bd5.zip |
Fix bug: Scroll position reported incorrectly to live wallpapers
Bug: 11189265
Change-Id: I410f318df4e43ed13d33889a8158a03438a6174f
Diffstat (limited to 'src/com/android')
-rw-r--r-- | src/com/android/launcher3/Workspace.java | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 359fd8640..687b02def 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -209,6 +209,10 @@ public class Workspace extends SmoothPagedView private boolean mWorkspaceFadeInAdjacentScreens; WallpaperOffsetInterpolator mWallpaperOffset; + private boolean mWallpaperIsLiveWallpaper; + private int mNumPagesForWallpaperParallax; + private float mLastSetWallpaperOffsetSteps = 0; + private Runnable mDelayedResizeRunnable; private Runnable mDelayedSnapToPageRunnable; private Point mDisplaySize = new Point(); @@ -1347,7 +1351,14 @@ public class Workspace extends SmoothPagedView // Don't use up all the wallpaper parallax until you have at least // MIN_PARALLAX_PAGE_SPAN pages int numScrollingPages = getNumScreensExcludingEmptyAndCustom(); - int parallaxPageSpan = Math.max(MIN_PARALLAX_PAGE_SPAN, numScrollingPages - 1); + int parallaxPageSpan; + if (mWallpaperIsLiveWallpaper) { + parallaxPageSpan = numScrollingPages - 1; + } else { + parallaxPageSpan = Math.max(MIN_PARALLAX_PAGE_SPAN, numScrollingPages - 1); + } + mNumPagesForWallpaperParallax = parallaxPageSpan; + // On RTL devices, push the wallpaper offset to the right if we don't have enough // pages (ie if numScrollingPages < MIN_PARALLAX_PAGE_SPAN) int padding = isLayoutRtl() ? parallaxPageSpan - numScrollingPages + 1 : 0; @@ -1391,7 +1402,11 @@ public class Workspace extends SmoothPagedView private void setWallpaperOffsetSteps() { // Set wallpaper offset steps (1 / (number of screens - 1)) - mWallpaperManager.setWallpaperOffsetSteps(1.0f / (getChildCount() - 1), 1.0f); + float xOffset = 1.0f / mNumPagesForWallpaperParallax; + if (xOffset != mLastSetWallpaperOffsetSteps) { + mWallpaperManager.setWallpaperOffsetSteps(xOffset, 1.0f); + mLastSetWallpaperOffsetSteps = xOffset; + } } public void setFinalX(float x) { @@ -1700,6 +1715,10 @@ public class Workspace extends SmoothPagedView if (LauncherAppState.getInstance().hasWallpaperChangedSinceLastCheck()) { setWallpaperDimension(); } + mWallpaperIsLiveWallpaper = mWallpaperManager.getWallpaperInfo() != null; + // Force the wallpaper offset steps to be set again, because another app might have changed + // them + mLastSetWallpaperOffsetSteps = 0f; } @Override |