summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Jurka <mikejurka@google.com>2012-04-04 02:00:43 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-04-04 02:00:43 -0700
commit8544d66fe8fb76da34f7568441fb970fb2c95339 (patch)
tree03040602c1b5b33dccc38d9e8acdb6af3ded6077
parent1a0e0ed93499ffed8a68790641d432bfd10493ee (diff)
parentb06d95fc79389ce49dc97ecaae23e05d931a6ac2 (diff)
downloadandroid_packages_apps_Trebuchet-8544d66fe8fb76da34f7568441fb970fb2c95339.tar.gz
android_packages_apps_Trebuchet-8544d66fe8fb76da34f7568441fb970fb2c95339.tar.bz2
android_packages_apps_Trebuchet-8544d66fe8fb76da34f7568441fb970fb2c95339.zip
Merge "Fix bug where overscroll never fully snapped back"
-rw-r--r--src/com/android/launcher2/PagedView.java8
-rw-r--r--src/com/android/launcher2/Workspace.java28
2 files changed, 24 insertions, 12 deletions
diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java
index 8a2a5a0ac..604e73c1d 100644
--- a/src/com/android/launcher2/PagedView.java
+++ b/src/com/android/launcher2/PagedView.java
@@ -396,7 +396,9 @@ public abstract class PagedView extends ViewGroup {
protected boolean computeScrollHelper() {
if (mScroller.computeScrollOffset()) {
// Don't bother scrolling if the page does not need to be moved
- if (mScrollX != mScroller.getCurrX() || mScrollY != mScroller.getCurrY()) {
+ if (mScrollX != mScroller.getCurrX()
+ || mScrollY != mScroller.getCurrY()
+ || mOverScrollX != mScroller.getCurrX()) {
scrollTo(mScroller.getCurrX(), mScroller.getCurrY());
}
invalidate();
@@ -755,9 +757,11 @@ public abstract class PagedView extends ViewGroup {
int screenCenter = mOverScrollX + halfScreenSize;
if (screenCenter != mLastScreenCenter || mForceScreenScrolled) {
+ // set mForceScreenScrolled before calling screenScrolled so that screenScrolled can
+ // set it for the next frame
+ mForceScreenScrolled = false;
screenScrolled(screenCenter);
mLastScreenCenter = screenCenter;
- mForceScreenScrolled = false;
}
// Find out which screens are visible; as an optimization we only call draw on them
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index ba8b56f20..fd3cc1f8e 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -171,6 +171,7 @@ public class Workspace extends SmoothPagedView
private final Rect mTempRect = new Rect();
private final int[] mTempXY = new int[2];
private float mOverscrollFade = 0;
+ private boolean mOverscrollTransformsSet;
public static final int DRAG_BITMAP_PADDING = 0;
// Camera and Matrix used to determine the final position of a neighboring CellLayout
@@ -1196,9 +1197,12 @@ public class Workspace extends SmoothPagedView
overScrollBackgroundAlphaInterpolator(Math.abs(scrollProgress)));
mOverScrollPageIndex = i;
cl.setOverScrollAmount(Math.abs(scrollProgress), i == 0);
- cl.setPivotX(cl.getMeasuredWidth() * (i == 0 ? 0.75f : 0.25f));
- cl.setPivotY(cl.getMeasuredHeight() * 0.5f);
- cl.setOverscrollTransformsDirty(true);
+ if (!mOverscrollTransformsSet) {
+ mOverscrollTransformsSet = true;
+ cl.setPivotX(cl.getMeasuredWidth() * (i == 0 ? 0.75f : 0.25f));
+ cl.setPivotY(cl.getMeasuredHeight() * 0.5f);
+ cl.setOverscrollTransformsDirty(true);
+ }
} else if (mOverScrollPageIndex != i) {
cl.setBackgroundAlphaMultiplier(
backgroundAlphaInterpolator(Math.abs(scrollProgress)));
@@ -1212,7 +1216,8 @@ public class Workspace extends SmoothPagedView
}
}
}
- if (!isSwitchingState() && !isInOverscroll) {
+ if (mOverscrollTransformsSet && !isInOverscroll) {
+ mOverscrollTransformsSet = false;
((CellLayout) getChildAt(0)).resetOverscrollTransforms();
((CellLayout) getChildAt(getChildCount() - 1)).resetOverscrollTransforms();
}
@@ -1226,18 +1231,21 @@ public class Workspace extends SmoothPagedView
float scrollProgress = getScrollProgress(screenCenter, cl, index);
cl.setOverScrollAmount(Math.abs(scrollProgress), index == 0);
float rotation = - WORKSPACE_OVERSCROLL_ROTATION * scrollProgress;
- cl.setCameraDistance(mDensity * CAMERA_DISTANCE);
- cl.setPivotX(cl.getMeasuredWidth() * (index == 0 ? 0.75f : 0.25f));
- cl.setPivotY(cl.getMeasuredHeight() * 0.5f);
cl.setRotationY(rotation);
- cl.setOverscrollTransformsDirty(true);
setFadeForOverScroll(Math.abs(scrollProgress));
+ if (!mOverscrollTransformsSet) {
+ mOverscrollTransformsSet = true;
+ cl.setCameraDistance(mDensity * CAMERA_DISTANCE);
+ cl.setPivotX(cl.getMeasuredWidth() * (index == 0 ? 0.75f : 0.25f));
+ cl.setPivotY(cl.getMeasuredHeight() * 0.5f);
+ cl.setOverscrollTransformsDirty(true);
+ }
} else {
if (mOverscrollFade != 0) {
setFadeForOverScroll(0);
}
- // We don't want to mess with the translations during transitions
- if (!isSwitchingState()) {
+ if (mOverscrollTransformsSet) {
+ mOverscrollTransformsSet = false;
((CellLayout) getChildAt(0)).resetOverscrollTransforms();
((CellLayout) getChildAt(getChildCount() - 1)).resetOverscrollTransforms();
}