diff options
author | Adam Cohen <adamcohen@google.com> | 2011-07-19 21:47:37 -0700 |
---|---|---|
committer | Adam Cohen <adamcohen@google.com> | 2011-07-19 21:49:13 -0700 |
commit | d4d7aa551ffdc80d810ff970fa72a6509960401e (patch) | |
tree | 546102a6f08d28c28cdaf70c8ccf438c3fd2d2eb /src/com/android/launcher2/DeleteDropTarget.java | |
parent | 9efd4a2a362b5209195e8691257b71ad465667f8 (diff) | |
download | android_packages_apps_Trebuchet-d4d7aa551ffdc80d810ff970fa72a6509960401e.tar.gz android_packages_apps_Trebuchet-d4d7aa551ffdc80d810ff970fa72a6509960401e.tar.bz2 android_packages_apps_Trebuchet-d4d7aa551ffdc80d810ff970fa72a6509960401e.zip |
Adding animations when dropping on delete / uninstall drop target
-> issue 5043661
Change-Id: I4e4830acc15e006e637b35c3d0dcc72c23414b95
Diffstat (limited to 'src/com/android/launcher2/DeleteDropTarget.java')
-rw-r--r-- | src/com/android/launcher2/DeleteDropTarget.java | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/src/com/android/launcher2/DeleteDropTarget.java b/src/com/android/launcher2/DeleteDropTarget.java index ffe453319..2c84c78e9 100644 --- a/src/com/android/launcher2/DeleteDropTarget.java +++ b/src/com/android/launcher2/DeleteDropTarget.java @@ -22,16 +22,19 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; +import android.graphics.Rect; import android.graphics.drawable.TransitionDrawable; import android.util.AttributeSet; import android.view.View; +import android.view.animation.AccelerateInterpolator; +import android.view.animation.DecelerateInterpolator; import android.widget.TextView; import com.android.launcher.R; public class DeleteDropTarget extends ButtonDropTarget { - private TextView mText; + private static int DELETE_ANIMATION_DURATION = 220; private ColorStateList mOriginalTextColor; private TransitionDrawable mDrawable; private int mHoverColor = 0xFFFF0000; @@ -147,7 +150,37 @@ public class DeleteDropTarget extends ButtonDropTarget { } } - public void onDrop(DragObject d) { + private void animateToTrashAndCompleteDrop(final DragObject d) { + DragLayer dragLayer = mLauncher.getDragLayer(); + Rect from = new Rect(); + Rect to = new Rect(); + dragLayer.getViewRectRelativeToSelf(d.dragView, from); + dragLayer.getViewRectRelativeToSelf(mText, to); + + int width = mDrawable.getIntrinsicWidth(); + int height = mDrawable.getIntrinsicHeight(); + to.set(to.left, to.top, to.left + width, to.bottom); + + // Center the destination rect about the trash icon + int xOffset = (int) -(d.dragView.getMeasuredWidth() - width) / 2; + int yOffset = (int) -(d.dragView.getMeasuredHeight() - height) / 2; + to.offset(xOffset, yOffset); + + mSearchDropTargetBar.deferOnDragEnd(); + Runnable onAnimationEndRunnable = new Runnable() { + @Override + public void run() { + mSearchDropTargetBar.onDragEnd(); + mLauncher.exitSpringLoadedDragMode(); + completeDrop(d); + } + }; + dragLayer.animateView(d.dragView, from, to, 0f, 0.1f, + DELETE_ANIMATION_DURATION, new DecelerateInterpolator(2), + new AccelerateInterpolator(2), onAnimationEndRunnable, false); + } + + private void completeDrop(DragObject d) { ItemInfo item = (ItemInfo) d.dragInfo; if (isAllAppsApplication(d.dragSource, item)) { @@ -178,4 +211,8 @@ public class DeleteDropTarget extends ButtonDropTarget { } } } + + public void onDrop(DragObject d) { + animateToTrashAndCompleteDrop(d); + } } |