From 6e1bdaf4198f9eb7b4124550d3ad07da2a0226e4 Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Tue, 29 May 2012 17:03:45 -0700 Subject: Lowering the threshold for flinging on larger devices. (Bug 6575670) Change-Id: I969057d6135babef430c60f5b2705179210719bb --- res/values-sw600dp/config.xml | 3 +++ res/values/config.xml | 3 +++ src/com/android/launcher2/DeleteDropTarget.java | 18 ++++++++++-------- src/com/android/launcher2/DragController.java | 12 +++++++----- 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/res/values-sw600dp/config.xml b/res/values-sw600dp/config.xml index a701e69d1..a463d73df 100644 --- a/res/values-sw600dp/config.xml +++ b/res/values-sw600dp/config.xml @@ -4,6 +4,9 @@ 7 3 + + -1000 + diff --git a/res/values/config.xml b/res/values/config.xml index bfd2bf5a9..a8d80fee2 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -4,6 +4,9 @@ false false + + -1500 + 45 diff --git a/src/com/android/launcher2/DeleteDropTarget.java b/src/com/android/launcher2/DeleteDropTarget.java index 1edc2abe9..949c035ea 100644 --- a/src/com/android/launcher2/DeleteDropTarget.java +++ b/src/com/android/launcher2/DeleteDropTarget.java @@ -39,7 +39,8 @@ import com.android.launcher.R; public class DeleteDropTarget extends ButtonDropTarget { private static int DELETE_ANIMATION_DURATION = 285; - private static int FLIND_DELETE_ANIMATION_DURATION = 350; + private static int FLING_DELETE_ANIMATION_DURATION = 350; + private static float FLING_TO_DELETE_FRICTION = 0.035f; private static int MODE_FLING_DELETE_TO_TRASH = 0; private static int MODE_FLING_DELETE_ALONG_VECTOR = 1; @@ -311,22 +312,22 @@ public class DeleteDropTarget extends ButtonDropTarget { * progressively. */ private static class FlingAlongVectorAnimatorUpdateListener implements AnimatorUpdateListener { - private static float FRICTION = 0.93f; - private DragLayer mDragLayer; private PointF mVelocity; private Rect mFrom; private long mPrevTime; private boolean mHasOffsetForScale; + private float mFriction; private final TimeInterpolator mAlphaInterpolator = new DecelerateInterpolator(0.75f); public FlingAlongVectorAnimatorUpdateListener(DragLayer dragLayer, PointF vel, Rect from, - long startTime) { + long startTime, float friction) { mDragLayer = dragLayer; mVelocity = vel; mFrom = from; mPrevTime = startTime; + mFriction = 1f - (dragLayer.getResources().getDisplayMetrics().density * friction); } @Override @@ -352,8 +353,8 @@ public class DeleteDropTarget extends ButtonDropTarget { dragView.setTranslationY(mFrom.top); dragView.setAlpha(1f - mAlphaInterpolator.getInterpolation(t)); - mVelocity.x *= FRICTION; - mVelocity.y *= FRICTION; + mVelocity.x *= mFriction; + mVelocity.y *= mFriction; mPrevTime = curTime; } }; @@ -363,7 +364,8 @@ public class DeleteDropTarget extends ButtonDropTarget { final Rect from = new Rect(); dragLayer.getViewRectRelativeToSelf(d.dragView, from); - return new FlingAlongVectorAnimatorUpdateListener(dragLayer, vel, from, startTime); + return new FlingAlongVectorAnimatorUpdateListener(dragLayer, vel, from, startTime, + FLING_TO_DELETE_FRICTION); } public void onFlingToDelete(final DragObject d, int x, int y, PointF vel) { @@ -385,7 +387,7 @@ public class DeleteDropTarget extends ButtonDropTarget { final ViewConfiguration config = ViewConfiguration.get(mLauncher); final DragLayer dragLayer = mLauncher.getDragLayer(); - final int duration = FLIND_DELETE_ANIMATION_DURATION; + final int duration = FLING_DELETE_ANIMATION_DURATION; final long startTime = AnimationUtils.currentAnimationTimeMillis(); // NOTE: Because it takes time for the first frame of animation to actually be diff --git a/src/com/android/launcher2/DragController.java b/src/com/android/launcher2/DragController.java index 1b0ccf519..84f151581 100644 --- a/src/com/android/launcher2/DragController.java +++ b/src/com/android/launcher2/DragController.java @@ -17,6 +17,7 @@ package com.android.launcher2; import android.content.Context; +import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Point; import android.graphics.PointF; @@ -62,7 +63,6 @@ public class DragController { static final int SCROLL_RIGHT = 1; private static final float MAX_FLING_DEGREES = 35f; - private static final int FLING_TO_DELETE_THRESHOLD_Y_VELOCITY = -1500; private Launcher mLauncher; private Handler mHandler; @@ -146,14 +146,16 @@ public class DragController { * @param context The application's context. */ public DragController(Launcher launcher) { + Resources r = launcher.getResources(); mLauncher = launcher; mHandler = new Handler(); - mScrollZone = launcher.getResources().getDimensionPixelSize(R.dimen.scroll_zone); + mScrollZone = r.getDimensionPixelSize(R.dimen.scroll_zone); mVelocityTracker = VelocityTracker.obtain(); - mVibrator = (Vibrator)launcher.getSystemService(Context.VIBRATOR_SERVICE); + mVibrator = (Vibrator) launcher.getSystemService(Context.VIBRATOR_SERVICE); - float density = launcher.getResources().getDisplayMetrics().density; - mFlingToDeleteThresholdVelocity = (int) (FLING_TO_DELETE_THRESHOLD_Y_VELOCITY * density); + float density = r.getDisplayMetrics().density; + mFlingToDeleteThresholdVelocity = + (int) (r.getInteger(R.integer.config_flingToDeleteMinVelocity) * density); } public boolean dragging() { -- cgit v1.2.3