除了workspace进入springload之外,其他模块也会进入springload,
主要是folder、allapp、widget,这三个模块
先看folder,从onlongclick开始。
public boolean onLongClick(View v) {
if (!mLauncher.isDraggingEnabled()) return true;
return startDrag(v, new DragOptions());
}
public boolean startDrag(View v, DragOptions options) {
Object tag = v.getTag();
if (tag instanceof ShortcutInfo) {
ShortcutInfo item = (ShortcutInfo) tag;
if (!v.isInTouchMode()) {
return false;
}
mEmptyCellRank = item.rank;
mCurrentDragView = v;
//绑定listener,在 callOnDragStart()的时候,会调用onDragStart方法。
mDragController.addDragListener(this);
而后进入workspace的beginDragShared
mLauncher.getWorkspace().beginDragShared(v, this, options);
}
return true;
}
Allapp的drag流程。
@Override
public boolean onLongClick(final View v) {
//首先进行一些普通判断,确保当前能够进行drag的模式。
if (!v.isInTouchMode()) return false;
if (!mLauncher.isAppsViewVisible() ||
mLauncher.getWorkspace().isSwitchingState()) return false;