修改布局查看device_profiles.xml ,根据不同的网格数加载
packages/apps/Launcher3/res/xml/device_profiles.xml
<grid-option
launcher:name="6_by_5"
launcher:numRows="5"
launcher:numColumns="6"
launcher:numSearchContainerColumns="3"
launcher:numExtendedHotseatIcons="6"
launcher:numFolderRows="3"
launcher:numFolderColumns="3"
launcher:numHotseatIcons="6"
launcher:numAllAppsColumns="6"
launcher:isScalable="true"
launcher:inlineNavButtonsEndSpacing="@dimen/taskbar_button_margin_6_5"
launcher:devicePaddingId="@xml/paddings_6x5"
launcher:dbFile="launcher_6_by_5.db"
launcher:defaultLayoutId="@xml/default_workspace_6x5"
launcher:deviceCategory="tablet" >
注意device下查看是否有相同的文件
如果需要显示 6*5 的布局需要将这个grid-option 对齐其他地方的文件,不然会不起作用。
上面的属性如 numRows numColumns 在attrs.xml定义
packages/apps/Launcher3/res/values/attrs.xml
查看 <declare-styleable name="GridDisplayOption">
需要添加6列的Hotseat 不起作用,查看log发现LoaderCursor 有输出error
packages/apps/Launcher3/src/com/android/launcher3/model/LoaderCursor.java
if (item.screenId >= mIDP.numDatabaseHotseatIcons) {
Log.e(TAG, "Error loading shortcut " + item
+ " into hotseat position screenId=" + item.screenId
+ ", position out of bounds: (0 to " + (mIDP.numDatabaseHotseatIcons - 1)
+ ")");
return false;
}
//mIDP.numDatabaseHotseatIcons 这个位置一直输出 4,最后只加载4个图标,反追查搜索numDatabaseHotseatIcons 找到位置 InvariantDeviceProfile.java
追查实例化过程可以查看 numDatabaseHotseatIcons
packages/apps/Launcher3/src/com/android/launcher3/InvariantDeviceProfile.java
查看实例化方法 initGrid 和 GridOption
AllApp界面拦截apk
packages/apps/Launcher3/src/com/android/launcher3/model/LoaderTask.java
private List<LauncherActivityInfo> loadAllApps() {
......
for (int i = 0; i < apps.size(); i++) {
LauncherActivityInfo app = apps.get(i);
//add
if("com.xxx.packges".equals(apps.get(i).getApplicationInfo().packageName)) {
continue;
}//add end
......
AppInfo appInfo = new AppInfo(app, mUserCache.getUserInfo(user),
ApiWrapper.INSTANCE.get(mApp.getContext()), mPmHelper, quietMode);
if (Flags.enableSupportForArchiving() && app.getApplicationInfo().isArchived) {