剛剛換了家新工作,主要業(yè)務(wù)是做Launcher的開發(fā),新的工作也意味著新的挑戰(zhàn),之前沒有接觸過Launcher的開發(fā),接下來就跟著我一起學(xué)習(xí)launcher吧,由于不能泄露公司項(xiàng)目?jī)?nèi)容,只做Launcher源碼的分析,以后會(huì)一起學(xué)習(xí)如何定制自己的Launcher。
概述
說道Launcher,想必大家也都不陌生,很多人感覺很深?yuàn)W的一個(gè)東西,其實(shí)他就是一個(gè),launcher其實(shí)就是一個(gè)app,從功能上說,是對(duì)手機(jī)上其他app的一個(gè)管理和啟動(dòng),從代碼上說比其他app多了一個(gè)屬性,就是在AndroidManifest.xml文件中多了一個(gè)“<category android:name="android.intent.category.HOME" />”屬性 和<action android:name="android.intent.action.MAIN" />,考慮的方面比較多,邏輯處理和代碼規(guī)范性比較強(qiáng),安卓各方面知識(shí)的應(yīng)用比較多。如果系統(tǒng)只安裝了一個(gè)launcher,就會(huì)直接開啟此launcher,如果裝有多個(gè)Launcher,運(yùn)行的時(shí)候會(huì)彈出對(duì)話框供我們選擇。杰西萊我們就一步步來進(jìn)行研究吧。
桌面結(jié)構(gòu)
我們來看一下桌面結(jié)構(gòu)圖

最外層,也就是手機(jī)顯示層是一個(gè)叫做Workspace的控件。
其實(shí)在Workspace外層還有一個(gè)DragLayer層。
searchDropTargetView為頂部搜索欄。
CellLayout為中間主題屏幕,有一個(gè)或者多個(gè),主要用來裝快捷方式或者一些小部件,(負(fù)一屏一般是一個(gè)獨(dú)立的View,不是CellLayout)。
中間的知識(shí)點(diǎn)叫做PageIndicator,用來指示當(dāng)前處在哪個(gè)CellLayout。
Hotseat是底部的四個(gè)小圖標(biāo)主要放電話,短信等常用應(yīng)用圖標(biāo)。左右滑動(dòng)屏幕時(shí),Hotseat不做滑動(dòng)處理。
具體的框架圖就是這樣的

當(dāng)用戶長(zhǎng)安桌面時(shí),中間的CellLayout會(huì)縮小,下面的Hotseat,pageIndicator和上面的搜索欄SearchDropTargetView會(huì)隱藏,顯示出隱藏的三個(gè)菜單按鈕(壁紙,小部件,設(shè)置 即:WALLPAPERS,WIDGETS,SETTINGS)此布局叫做Overviewpanel。三個(gè)菜單按鈕點(diǎn)進(jìn)去都有一個(gè)View。

這就是桌面的基本結(jié)構(gòu),接下來會(huì)講解Launcher的啟動(dòng)過程,數(shù)據(jù)的綁定,拖拽,等等的一些源碼知識(shí)。