首先把AllAppsButton去掉,
在HotSet.java中的把mContent.addViewToCellLayout(allAppsButton, -1, allAppsButton.getId(), lp, true);注释
改变mAllAppsButtonRank的值为-1,这个值是表示那个位置放置AllAppsButton
还需要在/res/xml/dw_tablet_hotseat.xml中把AllAppsButton位置设置一个Iteam
接下来就是要把所有APP放到桌面,Launcher加载桌面数据是通过查询数据库Favorites和workspaceScreen来获得的,所以我们需要在
第一次启动Launcher时把所有App的信息写到数据库中去
public void addItemToFavorites(Context context){
+ final List profiles = mUserManager.getUserProfiles();
+
+ for (UserHandleCompat user : profiles) {
+ final List apps = mLauncherApps.getActivityList(null, user);
+ // Fail if we don't have any apps
+ // TODO: Fix this. Only fail for the current user.
+ if (apps == null || apps.isEmpty()) {
+ return;
+ }
+ Log.d(TAG,"addItem");
+ int screenId = 1;
+ int cellX = 0;
+ int cellY = 0;
+ final ContentValues values = new ContentValues();
+ values.put(LauncherSettings.WorkspaceScreens._ID, screenId);
+ values.put(LauncherSettings.WorkspaceScreens.SCREEN_RANK, screenId-1);
+ values.put(LauncherSettings.ChangeLogColumns.MODIFIED, System.currentTimeMillis());
+ final ContentResolver cr = context.getContentResolver();
+ cr.insert(LauncherSettings.WorkspaceScreens.CONTENT_URI,values);
+ // Create the ApplicationInfos
+ for (int i = 0; i < apps.size(); i++) {
+ LauncherActivityInfoCompat app = apps.get(i);
+ if (cellX == 6){
+ cellY ++;
+ cellX = 0;
+ }
+ if (cellY == 4){
+ screenId ++;
+ values.clear();
+ values.put(LauncherSettings.WorkspaceScreens._ID, screenId);
+ values.put(LauncherSettings.WorkspaceScreens.SCREEN_RANK, screenId-1);
+ values.put(LauncherSettings.ChangeLogColumns.MODIFIED, System.currentTimeMillis());
+ cr.insert(LauncherSettings.WorkspaceScreens.CONTENT_URI,values);
+ cellY = 0;
+ }
+ addItemToDatabase(context, new ShortcutInfo(new AppInfo(context, app, user, mIconCache)),LauncherSetting
+ cellX ++;
+ }
+ }
+ }
b/packages/apps/Launcher3/src/com/android/launcher3/ShortcutInfo.java
需要在这给它设置一个+ mIcon = info.iconBitmap;
这样就可以把所有应用放到桌面了