diff --git a/core/java/com/android/internal/widget/SwipeDismissLayout.java b/core/java/com/android/internal/widget/SwipeDismissLayout.java index 467d42e1d3269..674d084d49285 100644 --- a/core/java/com/android/internal/widget/SwipeDismissLayout.java +++ b/core/java/com/android/internal/widget/SwipeDismissLayout.java @@ -35,7 +35,7 @@ import android.widget.FrameLayout; public class SwipeDismissLayout extends FrameLayout { private static final String TAG = "SwipeDismissLayout"; - private static final float TRANSLATION_MIN_ALPHA = 0.5f; + private static final float DISMISS_MIN_PROGRESS = 0.6f; public interface OnDismissedListener { void onDismissed(SwipeDismissLayout layout); @@ -77,6 +77,8 @@ public class SwipeDismissLayout extends FrameLayout { private OnDismissedListener mDismissedListener; private OnSwipeProgressChangedListener mProgressListener; + private float mLastX; + public SwipeDismissLayout(Context context) { super(context); init(context); @@ -95,7 +97,7 @@ public class SwipeDismissLayout extends FrameLayout { private void init(Context context) { ViewConfiguration vc = ViewConfiguration.get(getContext()); mSlop = vc.getScaledTouchSlop(); - mMinFlingVelocity = vc.getScaledMinimumFlingVelocity() * 16; + mMinFlingVelocity = vc.getScaledMinimumFlingVelocity(); mMaxFlingVelocity = vc.getScaledMaximumFlingVelocity(); mAnimationTime = getContext().getResources().getInteger( android.R.integer.config_shortAnimTime); @@ -193,8 +195,8 @@ public class SwipeDismissLayout extends FrameLayout { case MotionEvent.ACTION_MOVE: mVelocityTracker.addMovement(ev); + mLastX = ev.getRawX(); updateSwiping(ev); - updateDismiss(ev); if (mSwiping) { setProgress(ev.getRawX() - mDownX); break; @@ -256,20 +258,16 @@ public class SwipeDismissLayout extends FrameLayout { float absVelocityX = Math.abs(velocityX); float absVelocityY = Math.abs(mVelocityTracker.getYVelocity()); - if (deltaX > getWidth() / 2) { - mDismissed = true; - } else if (absVelocityX >= mMinFlingVelocity - && absVelocityX <= mMaxFlingVelocity - && absVelocityY < absVelocityX / 2 - && velocityX > 0 - && deltaX > 0) { + if (deltaX > (getWidth() * DISMISS_MIN_PROGRESS) && + absVelocityX < mMinFlingVelocity && + ev.getRawX() >= mLastX) { mDismissed = true; } } // Check if the user tried to undo this. if (mDismissed && mSwiping) { // Check if the user's finger is actually back - if (deltaX < getWidth() / 2) { + if (deltaX < (getWidth() * DISMISS_MIN_PROGRESS)) { mDismissed = false; } } diff --git a/core/res/res/values-watch/config.xml b/core/res/res/values-watch/config.xml index e71fa4a229661..44e258d846660 100644 --- a/core/res/res/values-watch/config.xml +++ b/core/res/res/values-watch/config.xml @@ -32,7 +32,7 @@ 4dp - 50dp + 500dp 8000dp