一、桌面APP的摆放
Android 7.0中默认的布局文件是:
packages\apps\Launcher3\res\xml\default_workspace_5x6.xml
上图中的图标摆放布局文件如下。
<favorites xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3">
<!-- Hotseat -->
<include launcher:workspace="@xml/dw_tablet_hotseat" />
<appwidget
launcher:packageName="com.google.android.googlequicksearchbox"
launcher:className="com.google.android.googlequicksearchbox.SearchActivity"
launcher:screen="1"
launcher:x="0"
launcher:y="0"
launcher:spanX="6"
launcher:spanY="1"/>
<folder
launcher:title="@string/microsoft_folder_title"
launcher:screen="1"
launcher:x="0"
launcher:y="4">
<favorite
launcher:packageName="com.microsoft.office.onenote"
launcher:className="com.microsoft.office.onenote.ui.ONMSplashActivity"/>
<favorite
launcher:packageName="com.microsoft.skydrive"
launcher:className="com.microsoft.skydrive.MainActivity"/>
<favorite
launcher:packageName="com.microsoft.office.outlook"
launcher:className="com.microsoft.office.outlook.MainActivity"/>
<favorite
launcher:packageName="com.microsoft.office.word"
launcher:className="com.microsoft.office.apphost.LaunchActivity"/>
<favorite
launcher:packageName="com.microsoft.office.excel"
launcher:className="com.microsoft.office.apphost.LaunchActivity"/>
<favorite
launcher:packageName="com.microsoft.office.powerpoint"
launcher:className="com.microsoft.office.apphost.LaunchActivity"/>
<favorite
launcher:packageName="com.skype.raider"
launcher:className="com.skype.raider.Main"/>
</folder>
<folder
launcher:title="@string/google_folder_title"
launcher:screen="1"
launcher:x="0"
launcher:y="3">
<favorite
launcher:packageName="com.google.android.googlequicksearchbox"
launcher:className="com.google.android.googlequicksearchbox.SearchActivity"/>
<favorite
launcher:packageName="com.android.chrome"
launcher:className="com.google.android.apps.chrome.Main"/>
<favorite
launcher:packageName="com.google.android.gm"
launcher:className="com.google.android.gm.ConversationListActivityGmail"/>
<favorite
launcher:packageName="com.google.android.apps.maps"
launcher:className="com.google.android.maps.MapsActivity"/>
<favorite
launcher:packageName="com.google.android.youtube"
launcher:className="com.google.android.youtube.app.honeycomb.Shell$HomeActivity"/>
<favorite
launcher:packageName="com.google.android.apps.docs"
launcher:className="com.google.android.apps.docs.app.NewMainProxyActivity"/>
<favorite
launcher:packageName="com.google.android.music"
launcher:className="com.android.music.activitymanagement.TopLevelActivity"/>
<favorite
launcher:packageName="com.google.android.videos"
launcher:className="com.google.android.youtube.videos.EntryPoint"/>
<favorite
launcher:packageName="com.google.android.apps.tachyon"
launcher:className="com.google.android.apps.tachyon.MainActivity"/>
<favorite
launcher:packageName="com.google.android.apps.photos"
launcher:className="com.google.android.apps.photos.home.HomeActivity"/>
</folder>
<favorite
launcher:packageName="com.navitel"
launcher:className="com.navitel.Navitel"
launcher:screen="1"
launcher:x="4"
launcher:y="3" />
<favorite
launcher:packageName="com.android.vending"
launcher:className="com.android.vending.AssetBrowserActivity"
launcher:screen="1"
launcher:x="5"
launcher:y="3" />
<folder
launcher:title="@string/irbis_folder_title"
launcher:screen="1"
launcher:x="4"
launcher:y="4">
<favorite
launcher:packageName="ru.ok.android"
launcher:className="ru.ok.android.ui.activity.main.OdklActivity"/>
<favorite
launcher:packageName="com.vkontakte.android"
launcher:className="com.vkontakte.android.MainActivity"/>
</folder>
<folder
launcher:title="@string/yandex_folder_title"
launcher:screen="1"
launcher:x="5"
launcher:y="4">
<favorite
launcher:packageName="ru.yandex.searchplugin"
launcher:className="ru.yandex.searchplugin.MainActivity"/>
</folder>
</favorites>
这里面关于图标的摆放位置的坐标如图所示。
5行6列,只要在布局文件中改变X,Y的值即可放置到你想要的位置。
二、HotSeat图标
在上面5x6布局文件中我们可以看到开头部分引用了这个布局
<include launcher:workspace="@xml/dw_tablet_hotseat" />
我们打开源码里面这个布局可以看到:
<favorites xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3">
<!-- Hotseat (We use the screen as the position of the item in the hotseat) -->
<!-- dialer, contacts, [All Apps], messaging, browser -->
<resolve
launcher:container="-101"
launcher:screen="0"
launcher:x="0"
launcher:y="0" >
<favorite launcher:uri="#Intent;action=android.intent.action.DIAL;end" />
<favorite launcher:uri="tel:123" />
<favorite launcher:uri="#Intent;action=android.intent.action.CALL_BUTTON;end" />
<favorite
launcher:packageName="com.android.dialer"
launcher:className="com.android.dialer.DialtactsActivity" />
</resolve>
<resolve
launcher:container="-101"
launcher:screen="1"
launcher:x="1"
launcher:y="0" >
<favorite
launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MESSAGING;end" />
<favorite launcher:uri="sms:" />
<favorite launcher:uri="smsto:" />
<favorite launcher:uri="mms:" />
<favorite launcher:uri="mmsto:" />
<favorite
launcher:packageName="com.android.mms"
launcher:className="com.android.mms.ui.ConversationList" />
</resolve>
<!-- All Apps -->
<resolve
launcher:container="-101"
launcher:screen="3"
launcher:x="3"
launcher:y="0" >
<favorite
launcher:packageName="com.android.camera2"
launcher:className="com.android.camera.CameraLauncher"/>
</resolve>
<resolve
launcher:container="-101"
launcher:screen="4"
launcher:x="4"
launcher:y="0" >
<favorite
launcher:packageName="com.android.chrome"
launcher:className="com.google.android.apps.chrome.Main"/>
</resolve>
</favorites>