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;
}