Loading src/com/android/launcher3/DragDriver.java +40 −45 Original line number Diff line number Diff line Loading @@ -46,11 +46,42 @@ public abstract class DragDriver { */ public abstract void onDragViewAnimationEnd(); public abstract boolean onTouchEvent(MotionEvent ev); public boolean onTouchEvent(MotionEvent ev) { final int action = ev.getAction(); switch (action) { case MotionEvent.ACTION_MOVE: mEventListener.onDriverDragMove(ev.getX(), ev.getY()); break; case MotionEvent.ACTION_UP: mEventListener.onDriverDragMove(ev.getX(), ev.getY()); mEventListener.onDriverDragEnd(ev.getX(), ev.getY(), null); break; case MotionEvent.ACTION_CANCEL: mEventListener.onDriverDragCancel(); break; } return true; } public abstract boolean onDragEvent (DragEvent event); public abstract boolean onInterceptTouchEvent(MotionEvent ev); public boolean onInterceptTouchEvent(MotionEvent ev) { final int action = ev.getAction(); switch (action) { case MotionEvent.ACTION_UP: mEventListener.onDriverDragEnd(ev.getX(), ev.getY(), null); break; case MotionEvent.ACTION_CANCEL: mEventListener.onDriverDragCancel(); break; } return true; } public static DragDriver create( DragController dragController, ItemInfo dragInfo, DragView dragView) { Loading @@ -71,7 +102,7 @@ class SystemDragDriver extends DragDriver { private final Intent mDragIntent; private final DragView mDragView; boolean mDragging = false; boolean mIsFrameworkDragActive = false; boolean mReceivedDropEvent = false; float mLastX = 0; float mLastY = 0; Loading Loading @@ -116,10 +147,10 @@ class SystemDragDriver extends DragDriver { final int flagOpaque = 1 << 9; final int flags = (mDragIntent != null ? flagGlobal : 0) | flagOpaque; mDragging = true; mIsFrameworkDragActive = true; if (!mDragView.startDrag(dragData, shadowBuilder, null, flags)) { mDragging = false; mIsFrameworkDragActive = false; mEventListener.onDriverDragCancel(); return; } Loading @@ -131,17 +162,17 @@ class SystemDragDriver extends DragDriver { @Override public boolean onTouchEvent(MotionEvent ev) { return false; return !mIsFrameworkDragActive && super.onTouchEvent(ev); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { return false; return !mIsFrameworkDragActive && super.onInterceptTouchEvent(ev); } @Override public boolean onDragEvent (DragEvent event) { if (!mDragging) { if (!mIsFrameworkDragActive) { // We are interested only in drag events started by this driver. return false; } Loading Loading @@ -189,7 +220,7 @@ class SystemDragDriver extends DragDriver { new AnotherWindowDropTarget(mDragView.getContext()) : null; mEventListener.onDriverDragEnd(mLastX, mLastY, dropTargetOverride); mDragging = false; mIsFrameworkDragActive = false; return true; default: Loading @@ -209,42 +240,6 @@ class InternalDragDriver extends DragDriver { @Override public void onDragViewAnimationEnd() {} @Override public boolean onTouchEvent(MotionEvent ev) { final int action = ev.getAction(); switch (action) { case MotionEvent.ACTION_MOVE: mEventListener.onDriverDragMove(ev.getX(), ev.getY()); break; case MotionEvent.ACTION_UP: mEventListener.onDriverDragMove(ev.getX(), ev.getY()); mEventListener.onDriverDragEnd(ev.getX(), ev.getY(), null); break; case MotionEvent.ACTION_CANCEL: mEventListener.onDriverDragCancel(); break; } return true; } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { final int action = ev.getAction(); switch (action) { case MotionEvent.ACTION_UP: mEventListener.onDriverDragEnd(ev.getX(), ev.getY(), null); break; case MotionEvent.ACTION_CANCEL: mEventListener.onDriverDragCancel(); break; } return true; } @Override public boolean onDragEvent (DragEvent event) { return false; } }; src/com/android/launcher3/DragView.java +5 −1 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ public class DragView extends View { @Thunk final DragController mDragController; private boolean mHasDrawn = false; @Thunk float mCrossFadeProgress = 0f; private boolean mAnimationCancelled = false; ValueAnimator mAnim; // The intrinsic icon scale factor is the scale factor for a drag icon over the workspace Loading Loading @@ -113,8 +114,10 @@ public class DragView extends View { mAnim.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { if (!mAnimationCancelled) { mDragController.onDragViewAnimationEnd(); } } }); mBitmap = Bitmap.createBitmap(bitmap, left, top, width, height); Loading Loading @@ -326,6 +329,7 @@ public class DragView extends View { } public void cancelAnimation() { mAnimationCancelled = true; if (mAnim != null && mAnim.isRunning()) { mAnim.cancel(); } Loading Loading
src/com/android/launcher3/DragDriver.java +40 −45 Original line number Diff line number Diff line Loading @@ -46,11 +46,42 @@ public abstract class DragDriver { */ public abstract void onDragViewAnimationEnd(); public abstract boolean onTouchEvent(MotionEvent ev); public boolean onTouchEvent(MotionEvent ev) { final int action = ev.getAction(); switch (action) { case MotionEvent.ACTION_MOVE: mEventListener.onDriverDragMove(ev.getX(), ev.getY()); break; case MotionEvent.ACTION_UP: mEventListener.onDriverDragMove(ev.getX(), ev.getY()); mEventListener.onDriverDragEnd(ev.getX(), ev.getY(), null); break; case MotionEvent.ACTION_CANCEL: mEventListener.onDriverDragCancel(); break; } return true; } public abstract boolean onDragEvent (DragEvent event); public abstract boolean onInterceptTouchEvent(MotionEvent ev); public boolean onInterceptTouchEvent(MotionEvent ev) { final int action = ev.getAction(); switch (action) { case MotionEvent.ACTION_UP: mEventListener.onDriverDragEnd(ev.getX(), ev.getY(), null); break; case MotionEvent.ACTION_CANCEL: mEventListener.onDriverDragCancel(); break; } return true; } public static DragDriver create( DragController dragController, ItemInfo dragInfo, DragView dragView) { Loading @@ -71,7 +102,7 @@ class SystemDragDriver extends DragDriver { private final Intent mDragIntent; private final DragView mDragView; boolean mDragging = false; boolean mIsFrameworkDragActive = false; boolean mReceivedDropEvent = false; float mLastX = 0; float mLastY = 0; Loading Loading @@ -116,10 +147,10 @@ class SystemDragDriver extends DragDriver { final int flagOpaque = 1 << 9; final int flags = (mDragIntent != null ? flagGlobal : 0) | flagOpaque; mDragging = true; mIsFrameworkDragActive = true; if (!mDragView.startDrag(dragData, shadowBuilder, null, flags)) { mDragging = false; mIsFrameworkDragActive = false; mEventListener.onDriverDragCancel(); return; } Loading @@ -131,17 +162,17 @@ class SystemDragDriver extends DragDriver { @Override public boolean onTouchEvent(MotionEvent ev) { return false; return !mIsFrameworkDragActive && super.onTouchEvent(ev); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { return false; return !mIsFrameworkDragActive && super.onInterceptTouchEvent(ev); } @Override public boolean onDragEvent (DragEvent event) { if (!mDragging) { if (!mIsFrameworkDragActive) { // We are interested only in drag events started by this driver. return false; } Loading Loading @@ -189,7 +220,7 @@ class SystemDragDriver extends DragDriver { new AnotherWindowDropTarget(mDragView.getContext()) : null; mEventListener.onDriverDragEnd(mLastX, mLastY, dropTargetOverride); mDragging = false; mIsFrameworkDragActive = false; return true; default: Loading @@ -209,42 +240,6 @@ class InternalDragDriver extends DragDriver { @Override public void onDragViewAnimationEnd() {} @Override public boolean onTouchEvent(MotionEvent ev) { final int action = ev.getAction(); switch (action) { case MotionEvent.ACTION_MOVE: mEventListener.onDriverDragMove(ev.getX(), ev.getY()); break; case MotionEvent.ACTION_UP: mEventListener.onDriverDragMove(ev.getX(), ev.getY()); mEventListener.onDriverDragEnd(ev.getX(), ev.getY(), null); break; case MotionEvent.ACTION_CANCEL: mEventListener.onDriverDragCancel(); break; } return true; } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { final int action = ev.getAction(); switch (action) { case MotionEvent.ACTION_UP: mEventListener.onDriverDragEnd(ev.getX(), ev.getY(), null); break; case MotionEvent.ACTION_CANCEL: mEventListener.onDriverDragCancel(); break; } return true; } @Override public boolean onDragEvent (DragEvent event) { return false; } };
src/com/android/launcher3/DragView.java +5 −1 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ public class DragView extends View { @Thunk final DragController mDragController; private boolean mHasDrawn = false; @Thunk float mCrossFadeProgress = 0f; private boolean mAnimationCancelled = false; ValueAnimator mAnim; // The intrinsic icon scale factor is the scale factor for a drag icon over the workspace Loading Loading @@ -113,8 +114,10 @@ public class DragView extends View { mAnim.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { if (!mAnimationCancelled) { mDragController.onDragViewAnimationEnd(); } } }); mBitmap = Bitmap.createBitmap(bitmap, left, top, width, height); Loading Loading @@ -326,6 +329,7 @@ public class DragView extends View { } public void cancelAnimation() { mAnimationCancelled = true; if (mAnim != null && mAnim.isRunning()) { mAnim.cancel(); } Loading