Android Laucnher3 拖拽应用图标阴影投放位置

来源:互联网 发布:mysql索引类型 编辑:程序博客网 时间:2024/06/05 00:41

  

  要想实现拖拽拖到到任何地方,阴影都投放在Workspace中,只需修改Workspace方法中的onDragOver方法,该方法在拖拽中会不断调用。


通过下面的代码可以看到,当判断用户拖拽图标到hostseat位置中,我们把图标阴影投放在workspace上。

//确定我们是否拖过了侧页        if (workspaceInModalState()) {            if (mLauncher.getHotseat() != null && !isExternalDragWidget(d)) {                if (isPointInSelfOverHotseat(d.x, d.y, r)) {                    layout = mLauncher.getHotseat().getLayout();                }            }            if (layout == null) {                layout = findMatchingPageForDragOver(d.dragView, d.x, d.y, false);            }            if (layout != mDragTargetLayout) {                setCurrentDropLayout(layout);                setCurrentDragOverlappingLayout(layout);                boolean isInSpringLoadedMode = (mState == State.SPRING_LOADED);                if (isInSpringLoadedMode) {                    if (mLauncher.isHotseatLayout(layout)) {                        mSpringLoadedDragController.cancel();                    } else {                        mSpringLoadedDragController.setAlarm(mDragTargetLayout);                    }                }            }        } else {            // Test to see if we are over the hotseat otherwise just use the current page            //测试我们是否在hotseat否则只使用当前页            /**             * 修改这里,如果用户把图标拉到hotseat区域也把图标投放到workspace             */            if (mLauncher.getHotseat() != null && !isDragWidget(d)) {                if (isPointInSelfOverHotseat(d.x, d.y, r)) {//                    layout = mLauncher.getHotseat().getLayout();                    layout = getCurrentDropLayout();                }            }            if (layout == null) {                layout = getCurrentDropLayout();            }            if (layout != mDragTargetLayout) {                setCurrentDropLayout(layout);                setCurrentDragOverlappingLayout(layout);            }        }