Android中源碼Launcher主屏幕程序排列詳解【安卓Launcher進化一】 – Android移動開發技術文章_手機開發 Android移動開發教學課程

 

最近研究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)。。先看截圖,下面看佈局文件中的代碼:

                                                                                                                 

 

                                                                       圖 (1)                                                                                                 圖(2)

 

下面看佈局文件中的代碼:              

view plainprint?

<?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格。

 

 

     編譯說明:

            (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

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

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

大明原創:轉載請標明出處:http://blog.csdn.net/wdaming1986/article/details/6978814

發佈留言