在做完仿小米桌面之后,客户又提了一个新需求,要求安装APK的时候,快捷方式要出现在末尾空白位置 仿小米桌面方法请点击:Launcher3仿小米桌面
在代码中开始搜索之旅 在这个位置packages\apps\Launcher3\src\com\android\launcher3\LauncherModel.java
发现了一个findNextAvailableIconSpace方法
// Try adding to the workspace screens incrementally, starting at the default or center
// screen and alternating between +1, -1, +2, -2, etc. (using ~ ceil(i/2f)*(-1)^(i-1))
firstScreenIndex = Math.max(firstScreenIndex, workspaceScreens.size()); //czy min
int count = workspaceScreens.size();
for (int screen = firstScreenIndex - 1; screen < count && !found; screen++) { //czy 加-1
int[] tmpCoordinates = new int[2];
if (findNextAvailableIconSpaceInScreen(items, tmpCoordinates,
workspaceScreens.get(screen))) {
// Update the Launcher db
return new Pair<Long, int[]>(workspaceScreens.get(screen), tmpCoordinates);
}
}
}
return null;
}
这里说明先for (int screen = firstScreenIndex - 1; screen < count && !found; screen++)在找第几屏,如果没有就新建一个 具体增加快捷方式坐标得方法在这里
findNextAvailableIconSpaceInScreen(items, tmpCoordinates,workspaceScreens.get(screen)
tmpCoordinates这个参数就是快捷方式插入的位置
源代码原有的方法是从上到下 从左到右的顺序去遍历每一个位置 遇到空位就插进去 具体方法如下
static boolean findNextAvailableIcon