Android15 launcher3
修改布局查看device_profiles.xml ,根据不同的网格数加载
packages/apps/Launcher3/res/xml/device_profiles.xml<grid-optionlauncher: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) {