Android Launcher3分析和修改 -------加载布局

1.Launcher默认界面配置(default_workspace)

Launcher的界面是默认读取一个xml配置文件,完成配置工作。这个配置文件在Launcher目录下,路径是:\Launcher\res\xml\default_workspace.xml 。这个XML文件就是刚升级,Launcher第一次显示的时候,会读取的配置文件。

default_workspace。xml里面可以配置APP快捷方式、Widget、Search搜索栏等。下面就常用的这几个属性进行解析:

 
  
//Edited by mythou
// http://www.cnblogs.com/mythou/
 
  
快捷方式说明
// 程序快捷键属性标签
launcher:className= " com.apical.radio.radioMainActivity "   // 该应用的类,点击图标时,需要启动的类
launcher:packageName= " com.apical.radio "        // 该应用的包名
launcher:screen= " 1 "                   // 第1屏,0-4屏共5屏
launcher:x= " 0 "                 // 图标X位置,左上角第一个为0,向右递增,0-4共5个
l0auncher:y= " 0 "                     // 图标Y位置,左上角第一个为0,向下递增,0-2共3个
/>
 
  
//Edited by mythou
// http://www.cnblogs.com/mythou/
//桌面Widget的标签
 
  
// 插件
launcher:className= "de.dnsproject.clock_widget_main.Clock1AppWidgetProvider " // 该应用的类
launcher:packageName= "de.dnsproject.clock_widget_main "          // 该应用的包名
launcher:screen= " 1 "                    // 第1屏,0-4屏共5屏
launcher:x= " 2 "                 // 图标X位置,左上角第一个为0,向左递增,0-4共5个
launcher:y= " 1 " // 图标Y位置,左上角第一个为0,向下递增,0-2共3个
launcher:spanX= "3 " // 在x方向上所占格数
launcher:spanY= " 2 " />
 
  
// 搜索栏
launcher:screen= " 1 "   // 第2屏
    launcher:x= " 0 " // 图标X位置
    launcher:y= " 1 "/> // 图标Y位置
 
  
   
        launcher:container="-100"
        launcher:screen="1"
        launcher:title="@string/accessibility_all_apps_button"
        launcher:x="0"         launcher:y="3" >                     launcher:container="1"
            launcher:className="com.android.settings.Settings"             launcher:packageName="com.android.settings"
            launcher:className="com.kylindev.henengptt.app.LoginActivity"
            launcher:screen="0"             launcher:x="0"             launcher:y="0" />                             launcher:packageName="com.kylindev.henengptt"             launcher:screen="0"             launcher:x="1"             launcher:y="0" />
            launcher:x="2"
            launcher:className="com.android.deskclock.DeskClock"             launcher:container="1"             launcher:packageName="com.android.deskclock"             launcher:screen="0"
   
            launcher:y="0" />

2、LauncherProvider.java的loadFavorites分析:

//传入default_workspace文件的资源ID和数据库实力,把xml里面数据解析,保存到Launcher数据库。返回总共解析了多少个标签。
        

        private int loadFavorites(SQLiteDatabase db, WorkspaceLoader loader) {

            ArrayList screenIds = new ArrayList();
            // TODO: Use multiple loaders with fall-back and transaction.
            int count = loader.loadLayout(db, screenIds);


            // Add the screens specified by the items above
            Collections.sort(screenIds);
            int rank = 0;
            ContentValues values = new ContentValues();
            for (Long id : screenIds) {
                values.clear();
                values.put(LauncherSettings.WorkspaceScreens._ID, id);
                values.put(LauncherSettings.WorkspaceScreens.SCREEN_RANK, rank);
                if (dbInsertAndCheck(this, db, TABLE_WORKSPACE_SCREENS, null, values) < 0) {
                    throw new RuntimeException("Failed initialize screen table"
                            + "from default layout");
                }
                rank++;
            }


            // Ensure that the max ids are initialized
            mMaxItemId = initializeMaxItemId(db);
            mMaxScreenId = initializeMaxScreenId(db);


            return count;
        }

你可能感兴趣的:(launcher)