summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/dragndrop/FlingToDeleteHelper.java
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2017-01-20 19:32:31 -0800
committerSunny Goyal <sunnygoyal@google.com>2017-01-24 22:24:54 -0800
commitb38fab75735c601b61765ecae61494c8637aaef4 (patch)
tree02ccb88b0137bf2f5a93db052ae0f4f11983bdf9 /src/com/android/launcher3/dragndrop/FlingToDeleteHelper.java
parent658058b960ef029fc70f0f3e131057a6ba0d10e2 (diff)
downloadandroid_packages_apps_Trebuchet-b38fab75735c601b61765ecae61494c8637aaef4.tar.gz
android_packages_apps_Trebuchet-b38fab75735c601b61765ecae61494c8637aaef4.tar.bz2
android_packages_apps_Trebuchet-b38fab75735c601b61765ecae61494c8637aaef4.zip
Adding support for drag and drop for requestPinItem.
On long pressing, the confirmation activity starts a system drag-n-drop and focuses the launcher activity. We then drive the launcher drag controller using the system drag event Caveats: > We use a transparent preview for system drag and drop and use a view inside launcher for actual preview. This gives us better control over various animations. > The parameters for drag operation are passed to the Launcher activity using the intent. Since onNewIntent and onDragEvent come at different times and are not associated, a random uuid is used as mime-type to match the drag event with intent params > If the workspace is locked (eg, loader is running) the drag operation is simply dropped. Will be imporved in follow up cls Bug: 33584624 Change-Id: I0bb5b25b690f86b6af31a14e11beb669fcb3a281
Diffstat (limited to 'src/com/android/launcher3/dragndrop/FlingToDeleteHelper.java')
-rw-r--r--src/com/android/launcher3/dragndrop/FlingToDeleteHelper.java27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/com/android/launcher3/dragndrop/FlingToDeleteHelper.java b/src/com/android/launcher3/dragndrop/FlingToDeleteHelper.java
index a2aa27d17..e79474483 100644
--- a/src/com/android/launcher3/dragndrop/FlingToDeleteHelper.java
+++ b/src/com/android/launcher3/dragndrop/FlingToDeleteHelper.java
@@ -17,6 +17,8 @@
package com.android.launcher3.dragndrop;
import android.graphics.PointF;
+import android.os.SystemClock;
+import android.view.DragEvent;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.view.ViewConfiguration;
@@ -53,6 +55,31 @@ public class FlingToDeleteHelper {
mVelocityTracker.addMovement(ev);
}
+ /**
+ * Same as {@link #recordMotionEvent}. It creates a temporary {@link MotionEvent} object
+ * using {@param event} for tracking velocity.
+ */
+ public void recordDragEvent(long dragStartTime, DragEvent event) {
+ final int motionAction;
+ switch (event.getAction()) {
+ case DragEvent.ACTION_DRAG_STARTED:
+ motionAction = MotionEvent.ACTION_DOWN;
+ break;
+ case DragEvent.ACTION_DRAG_LOCATION:
+ motionAction = MotionEvent.ACTION_MOVE;
+ break;
+ case DragEvent.ACTION_DRAG_ENDED:
+ motionAction = MotionEvent.ACTION_UP;
+ break;
+ default:
+ return;
+ }
+ MotionEvent emulatedEvent = MotionEvent.obtain(dragStartTime, SystemClock.uptimeMillis(),
+ motionAction, event.getX(), event.getY(), 0);
+ recordMotionEvent(emulatedEvent);
+ emulatedEvent.recycle();
+ }
+
public void releaseVelocityTracker() {
if (mVelocityTracker != null) {
mVelocityTracker.recycle();