diff options
author | Jorim Jaggi <jjaggi@google.com> | 2014-01-16 15:30:42 -0800 |
---|---|---|
committer | Jorim Jaggi <jjaggi@google.com> | 2014-02-12 22:16:51 +0100 |
commit | 55bd9725d5c0373b89f7b9bbd9547550ea3bbc63 (patch) | |
tree | d42a4d3a6fc5e53fbe36d0a8d705e92ed7d4988d /src/com/android/launcher3/FolderIcon.java | |
parent | f180497bc303af666d2672fc268730f4ec1c771b (diff) | |
download | android_packages_apps_Trebuchet-55bd9725d5c0373b89f7b9bbd9547550ea3bbc63.tar.gz android_packages_apps_Trebuchet-55bd9725d5c0373b89f7b9bbd9547550ea3bbc63.tar.bz2 android_packages_apps_Trebuchet-55bd9725d5c0373b89f7b9bbd9547550ea3bbc63.zip |
Implement spring-loading of folders when dragging over.
Bug: 8912132
Change-Id: Id81889a133e56461df2e20599c4b40020818ba18
Diffstat (limited to 'src/com/android/launcher3/FolderIcon.java')
-rw-r--r-- | src/com/android/launcher3/FolderIcon.java | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/com/android/launcher3/FolderIcon.java b/src/com/android/launcher3/FolderIcon.java index 644db47ac..78026f162 100644 --- a/src/com/android/launcher3/FolderIcon.java +++ b/src/com/android/launcher3/FolderIcon.java @@ -75,10 +75,16 @@ public class FolderIcon extends FrameLayout implements FolderListener { // Flag as to whether or not to draw an outer ring. Currently none is designed. public static final boolean HAS_OUTER_RING = true; + // Flag whether the folder should open itself when an item is dragged over is enabled. + public static final boolean SPRING_LOADING_ENABLED = true; + // The degree to which the item in the back of the stack is scaled [0...1] // (0 means it's not scaled at all, 1 means it's scaled to nothing) private static final float PERSPECTIVE_SCALE_FACTOR = 0.35f; + // Delay when drag enters until the folder opens, in miliseconds. + private static final int ON_OPEN_DELAY = 800; + public static Drawable sSharedFolderLeaveBehind = null; private ImageView mPreviewBackground; @@ -103,6 +109,9 @@ public class FolderIcon extends FrameLayout implements FolderListener { private PreviewItemDrawingParams mAnimParams = new PreviewItemDrawingParams(0, 0, 0, 0); private ArrayList<ShortcutInfo> mHiddenItems = new ArrayList<ShortcutInfo>(); + private Alarm mOpenAlarm = new Alarm(); + private ItemInfo mDragInfo; + public FolderIcon(Context context, AttributeSet attrs) { super(context, attrs); init(); @@ -331,11 +340,32 @@ public class FolderIcon extends FrameLayout implements FolderListener { mFolderRingAnimator.setCellLayout(layout); mFolderRingAnimator.animateToAcceptState(); layout.showFolderAccept(mFolderRingAnimator); + mOpenAlarm.setOnAlarmListener(mOnOpenListener); + if (SPRING_LOADING_ENABLED) { + mOpenAlarm.setAlarm(ON_OPEN_DELAY); + } + mDragInfo = (ItemInfo) dragInfo; } public void onDragOver(Object dragInfo) { } + OnAlarmListener mOnOpenListener = new OnAlarmListener() { + public void onAlarm(Alarm alarm) { + ShortcutInfo item; + if (mDragInfo instanceof AppInfo) { + // Came from all apps -- make a copy. + item = ((AppInfo) mDragInfo).makeShortcut(); + item.spanX = 1; + item.spanY = 1; + } else { + item = (ShortcutInfo) mDragInfo; + } + mFolder.beginExternalDrag(item); + mLauncher.openFolder(FolderIcon.this); + } + }; + public void performCreateAnimation(final ShortcutInfo destInfo, final View destView, final ShortcutInfo srcInfo, final DragView srcView, Rect dstRect, float scaleRelativeToDragLayer, Runnable postAnimationRunnable) { @@ -371,6 +401,7 @@ public class FolderIcon extends FrameLayout implements FolderListener { public void onDragExit() { mFolderRingAnimator.animateToNaturalState(); + mOpenAlarm.cancelAlarm(); } private void onDrop(final ShortcutInfo item, DragView animateView, Rect finalRect, |