diff options
author | Michael Jurka <mikejurka@google.com> | 2014-01-29 16:32:39 +0100 |
---|---|---|
committer | Danesh M <daneshm90@gmail.com> | 2014-06-06 22:54:27 -0700 |
commit | 2985440a1e90b40795bdb0b6caee6f58be5e3fd7 (patch) | |
tree | 2a513417437a5ea2c99ed3e8df3fc903b826df39 /src/com/android/launcher3/Workspace.java | |
parent | 1d9c2810700b8bc643be34f5e576d82e94115fe5 (diff) | |
download | android_packages_apps_Trebuchet-2985440a1e90b40795bdb0b6caee6f58be5e3fd7.tar.gz android_packages_apps_Trebuchet-2985440a1e90b40795bdb0b6caee6f58be5e3fd7.tar.bz2 android_packages_apps_Trebuchet-2985440a1e90b40795bdb0b6caee6f58be5e3fd7.zip |
Fix bug: Scroll position reported incorrectly to live wallpapers
Bug: 11189265
Change-Id: I410f318df4e43ed13d33889a8158a03438a6174f
Diffstat (limited to 'src/com/android/launcher3/Workspace.java')
-rw-r--r-- | src/com/android/launcher3/Workspace.java | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 91f93dd14..72fd9edbc 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -213,7 +213,12 @@ public class Workspace extends SmoothPagedView private boolean mWorkspaceFadeInAdjacentScreens; WallpaperOffsetInterpolator mWallpaperOffset; + private boolean mScrollWallpaper; + private boolean mWallpaperIsLiveWallpaper; + private int mNumPagesForWallpaperParallax; + private float mLastSetWallpaperOffsetSteps = 0; + private Runnable mDelayedResizeRunnable; private Point mDisplaySize = new Point(); @@ -1395,7 +1400,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; @@ -1439,7 +1451,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) { @@ -1781,6 +1797,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 |