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即可。
按後退鍵還有其他的