在完整的讲解了拖拽流程之后,或许还有一个疑问:dragOver是被谁调用的?
点击进入click,然后处理完成,长按进入onlongclick处理完成,这两者都是view的接口。
那么,drag的过程中,需要一直读取手指的位置,这些操作自然也是view的接口View.OnDragListener。Launcher8.0有一个类叫做PinItemDragListener专门用来处理drag相关的操作。其中有个类ondrag,表示view进入了drag模式。
本方法最终返回 mDragController.onDragEven;
public boolean onDrag(View view, DragEvent event) {
if (mLauncher == null || mDragController == null) {
postCleanup();
return false;
}
if (event.getAction() == DragEvent.ACTION_DRAG_STARTED) {
if (onDragStart(event)) {
return true;
} else {
postCleanup();
return false;
}
}
return mDragControl