1. 桌面上favorites介绍
上图的launcher桌面中间有四个元素,上面是一个时钟的窗口小部件,下面一排分别是一个Camera,一个Amazon书签,一个文件夹(文件夹中是Settings和Clock)。
在代码中它们都是favorites分别称为:APPWIDGET、APPLICATION、SHORTCUT、FOLDER。
2. 数据库查看
favorites保存在数据库中。
导出数据库文件 data/data/com.android.launcher/databases/launcher.db
favorites表的结构
表中的数据,对应图1
intent的特写
3. 数据库中favorites表简介
· _id · title 显示的名字 · intent · container 容器: CONTAINER_DESKTOP=-100,默认值; CONTAINER_HOTSEAT=-101,常驻在屏幕下方,手机上的最下面一行,平板上没有,所以图3中的Brower在图1中没有; 图3中的Clock,Settings的container是6,表示他们属于Folder。 · screen 所属的屏幕。 · cellX x轴上的位置。 · cellY y轴上的位置。 · spanX 宽度,默认为1。 · spanY 高度,默认为1。 · itemType 类型: ITEM_TYPE_APPLICATION = 0; ITEM_TYPE_SHORTCUT = 1; ITEM_TYPE_FOLDER = 2; ITEM_TYPE_LIVE_FOLDER = 3; ITEM_TYPE_APPWIDGET = 4; · appWidgetId · isShortcut · iconType · iconPackage · iconResource · icon · uri · displayMode
详细的可以查看Launcher2\src\com\android\launcher2\LauncherSettings.java
4. 给桌面添加默认的favorites
launcher上的默认的favorite是在Launcher2\res\xml\default_workspace.xml中定义的。(Launcher2\res\xml-sw600dp\default_workspace.xml、Launcher2\res\xml-sw720dp\default_workspace.xml)
<?xml version="1.0" encoding="utf-8"?> <favorites xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher" > <appwidget launcher:className="com.android.alarmclock.AnalogAppWidgetProvider" launcher:packageName="com.android.deskclock" launcher:screen="4" launcher:spanX="2" launcher:spanY="2" launcher:x="2" launcher:y="0" /> <favorite launcher:className="com.android.camera.CameraLauncher" launcher:packageName="com.android.gallery3d" launcher:screen="4" launcher:x="1" launcher:y="3" /> <shortcut launcher:icon="@drawable/ic_home_voice_search_holo" launcher:screen="4" launcher:title="@string/application_name" launcher:uri="https://www.amazon.com/gp/feature.html?ie=UTF8&docId=1000626391" launcher:x="2" launcher:y="3" /> <folder launcher:icon="@drawable/ic_launcher_home" launcher:screen="4" launcher:title="@string/folder_name_format" launcher:x="3" launcher:y="3" > <favorite launcher:className="com.android.settings.Settings" launcher:packageName="com.android.settings" /> <favorite launcher:className="com.android.deskclock.DeskClock" launcher:packageName="com.android.deskclock" /> </folder> <!-- Hotseat (We use the screen as the position of the item in the hotseat) --> <favorite launcher:className="com.android.browser.BrowserActivity" launcher:container="-101" launcher:packageName="com.android.browser" launcher:screen="4" launcher:x="4" launcher:y="0" /> </favorites>
5. 工具附件及介绍
自己写的一个程序,帮助生成default_workspace.xml,可惜还不支持shortcut和folder
之前在Launcher上添加应用或者窗口小部件,需要找到包名和类名,以及位置等,然后手动在代码中添加。现在只需要在桌面上拖动添加,然后运行该程序,就会生成当前桌面应用和窗口小部件的布局文件,保存在/mnt/sdcard/default_workspace.xml中。将该文件直接替换packages\apps\Launcher2\res\xml-sw720dp\default_workspace.xml即可。
按后退键还有其他的