您的位置:首页 > 移动开发 > Android开发

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

2017-07-28 16:49 260 查看
  

  要想实现拖拽拖到到任何地方,阴影都投放在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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: