Android中源碼Launcher主畫面程式排列詳解【安卓Launcher進化一】

來源:互聯網
上載者:User

最近研究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?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!-- Copyright (C) 2009 The Android Open Source Project  
  3.   
  4.      Licensed under the Apache License, Version 2.0 (the "License");  
  5.      you may not use this file except in compliance with the License.  
  6.      You may obtain a copy of the License at  
  7.   
  8.           http://www.apache.org/licenses/LICENSE-2.0  
  9.   
  10.      Unless required by applicable law or agreed to in writing, software  
  11.      distributed under the License is distributed on an "AS IS" BASIS,  
  12.      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
  13.      See the License for the specific language governing permissions and  
  14.      limitations under the License.  
  15. -->  
  16.   
  17.    <favorites xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher">  
  18.     <!--  Far-left screen [0] -->  
  19.   
  20.     <!--  Left screen [1] -->  
  21.     <appwidget  
  22.         launcher:packageName="com.google.android.apps.genie.geniewidget"  
  23.         launcher:className="com.google.android.apps.genie.geniewidget.miniwidget.MiniWidgetProvider"  
  24.         launcher:screen="1"  
  25.         launcher:x="0"  
  26.         launcher:y="0"  
  27.         launcher:spanX="4"  
  28.         launcher:spanY="1" />  
  29.           
  30.     <!--  Middle screen [2] -->  
  31.     <search  
  32.         launcher:screen="2"  
  33.         launcher:x="0"  
  34.         launcher:y="0" />  
  35.   
  36.     <appwidget  
  37.         launcher:packageName="com.android.protips"  
  38.         launcher:className="com.android.protips.ProtipWidget"  
  39.         launcher:screen="2"  
  40.         launcher:x="0"  
  41.         launcher:y="1"  
  42.         launcher:spanX="4"  
  43.         launcher:spanY="1" />  
  44.     <favorite  
  45.         launcher:packageName="com.android.Mms"  
  46.         launcher:className="com.android.Mms.MainActivity"  
  47.         launcher:screen="2"  
  48.         launcher:x="0"  
  49.         launcher:y="3"  
  50.     />  
  51.     <favorite  
  52.         launcher:packageName="com.android.phone"  
  53.         launcher:className="com.android.phone.MainActivity"  
  54.         launcher:screen="2"  
  55.         launcher:x="1"  
  56.         launcher:y="3"  
  57.     />  
  58.     <favorite  
  59.         launcher:packageName="com.android.Email"  
  60.         launcher:className="com.android.Email.MainActivity"  
  61.         launcher:screen="2"  
  62.         launcher:x="2"  
  63.         launcher:y="3"  
  64.     />  
  65.     <favorite  
  66.         launcher:packageName="com.android.yuemei"  
  67.         launcher:className="com.android.yuemei.MainActivity"  
  68.         launcher:screen="2"  
  69.         launcher:x="3"  
  70.         launcher:y="3"  
  71.     />  
  72.     <!--  Right screen [3] -->  
  73.     <appwidget  
  74.         launcher:packageName="com.android.music"  
  75.         launcher:className="com.android.music.MediaAppWidgetProvider"  
  76.         launcher:screen="3"  
  77.         launcher:x="0"  
  78.         launcher:y="0"  
  79.         launcher:spanX="4"  
  80.         launcher:spanY="1" />  
  81.   
  82.     <appwidget  
  83.         launcher:packageName="com.android.vending"  
  84.         launcher:className="com.android.vending.MarketWidgetProvider"  
  85.         launcher:screen="3"  
  86.         launcher:x="1"  
  87.         launcher:y="1"  
  88.         launcher:spanX="2"  
  89.         launcher:spanY="2" />  
  90.   
  91.     <!--  Far-right screen [4] -->  
  92.   
  93. </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

                                                        或者乾脆點扣電池重啟。事先聲明:此招為大明習慣,操作過程中手機出現任何問題,本人概不負責。             

             這樣五步驟就得到了你想要的效果了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.