最近研究Lancher,從簡訊Mms的架構中過度到Launcher的bug和需求修改中,下面對launcher最簡單的主畫面程式的程式的布局的詳解,給讀者一個入門的感覺,android的主畫面一共分為5個螢幕,從左至右依次是:0,1,2,3,4。所以想在那個主畫面放哪些程式或者widget都可以在布局檔案中實現,下面我就說說這個布局檔案default_workspace.xml。這是對主畫面進行排列的布局檔案,在這裡面寫好,程式運行後就可以實現哪個螢幕放那些特定的程式或widget了。下面先看,分別為圖(1)和圖(2)。圖(1)為3屏即為主屏的布局,最下面放了4個程式的捷徑。圖(2)為我粗糙地畫了一個大概的一個面貌,螢幕一般被分為2維座標的,左上方為原點(0,0),橫向的為x軸(座標向右依次加1,分別是0,1,2,3),豎向的為y軸(向下依次加1,分別是0,1,2,3)。大明原創:轉載請標明出處:http://blog.csdn.net/wdaming1986/article/details/6978814。先看,下面看布局檔案中的代碼:
圖 (1) 圖(2)
下面看布局檔案中的代碼:
[html]
view plaincopyprint?
- <?xml version="1.0" encoding="utf-8"?>
- <!-- Copyright (C) 2009 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
-
- <favorites xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher">
- <!-- Far-left screen [0] -->
-
- <!-- Left screen [1] -->
- <appwidget
- launcher:packageName="com.google.android.apps.genie.geniewidget"
- launcher:className="com.google.android.apps.genie.geniewidget.miniwidget.MiniWidgetProvider"
- launcher:screen="1"
- launcher:x="0"
- launcher:y="0"
- launcher:spanX="4"
- launcher:spanY="1" />
-
- <!-- Middle screen [2] -->
- <search
- launcher:screen="2"
- launcher:x="0"
- launcher:y="0" />
-
- <appwidget
- launcher:packageName="com.android.protips"
- launcher:className="com.android.protips.ProtipWidget"
- launcher:screen="2"
- launcher:x="0"
- launcher:y="1"
- launcher:spanX="4"
- launcher:spanY="1" />
- <favorite
- launcher:packageName="com.android.Mms"
- launcher:className="com.android.Mms.MainActivity"
- launcher:screen="2"
- launcher:x="0"
- launcher:y="3"
- />
- <favorite
- launcher:packageName="com.android.phone"
- launcher:className="com.android.phone.MainActivity"
- launcher:screen="2"
- launcher:x="1"
- launcher:y="3"
- />
- <favorite
- launcher:packageName="com.android.Email"
- launcher:className="com.android.Email.MainActivity"
- launcher:screen="2"
- launcher:x="2"
- launcher:y="3"
- />
- <favorite
- launcher:packageName="com.android.yuemei"
- launcher:className="com.android.yuemei.MainActivity"
- launcher:screen="2"
- launcher:x="3"
- launcher:y="3"
- />
- <!-- Right screen [3] -->
- <appwidget
- launcher:packageName="com.android.music"
- launcher:className="com.android.music.MediaAppWidgetProvider"
- launcher:screen="3"
- launcher:x="0"
- launcher:y="0"
- launcher:spanX="4"
- launcher:spanY="1" />
-
- <appwidget
- launcher:packageName="com.android.vending"
- launcher:className="com.android.vending.MarketWidgetProvider"
- launcher:screen="3"
- launcher:x="1"
- launcher:y="1"
- launcher:spanX="2"
- launcher:spanY="2" />
-
- <!-- Far-right screen [4] -->
-
- </favorites>
標籤講解:
<appwidget>為添加相應的widget;
<search>為添加google搜尋方塊;
<favorite>為添加程式的捷徑;
屬性講解:
launcher:packageName="com.android.vending " 程式的包的名字。
launcher:className="com.android.vending.MarketWidgetProvider" 程式入口類的名字。
launcher:screen="3" 表示在螢幕的位置,從左向右依次為:0,1,2,3,4.共5屏,第2屏為主畫面。
launcher:x="1" 在X軸的位置,(2)所畫。向右依次增加,分別為0,1,2,3.共4個。
launcher:y="1" 在Y軸的位置,(2)所畫。向下依次增加,分別為0,1,2,3.共4個。
launcher:spanX="4" 在X軸上占的格數。"4"代表佔4格。
launcher:spanY="2" 在Y軸上占的格數,"2"代表佔2格。
大明原創:轉載請標明出處:http://blog.csdn.net/wdaming1986/article/details/6978814
編譯說明:
(1)先build完成;有問題可以參考Android在Linux下編譯源碼【安卓進化二十八】;
(2)在mm完成後,push到手機中:
adb push ../../out/target/product/n80w/system/app/Launcher.apk system/app/
(3)進入燒錄手機的紅螢幕介面。開機鍵和音量減小的鍵一起按。
(4)用root許可權進入../out/host/linux_x86/bin/目錄下,輸入命令:
#./fastboot -w 清除 userdata 和 cache 。目的:確保得到你想要的效果!
(5)最後重啟手機即可:或者輸入命令:./fastboot reboot
或者乾脆點扣電池重啟。事先聲明:此招為大明習慣,操作過程中手機出現任何問題,本人概不負責。
這樣五步驟就得到了你想要的效果了。