從事launcher開(kāi)發(fā)也有一年有余了,雖然時(shí)間比較長(zhǎng)了涵叮,但是由于是團(tuán)隊(duì)開(kāi)發(fā)坤邪,其他任務(wù)也比較多熙含,所以一直對(duì)整個(gè)項(xiàng)目的完整情況沒(méi)有很好的了解,今年換了新的公司艇纺,依然是做launcher開(kāi)發(fā)怎静,從新搭建工程,因此借助這個(gè)機(jī)會(huì)完整的學(xué)習(xí)一下launcher的源碼黔衡,由于之前沒(méi)有完全接入蚓聘,因此也沒(méi)有做詳細(xì)的筆記,這次從頭參與項(xiàng)目開(kāi)發(fā)盟劫,也正好做一下詳細(xì)的筆記和知識(shí)梳理夜牡,由于公司項(xiàng)目商業(yè)性,為避免泄露公司項(xiàng)目?jī)?nèi)容侣签,因此本系列教程只做雙層launcher的詳解氯材,后續(xù)會(huì)教大家來(lái)定制自己的launcher。
桌面使用操作
說(shuō)到launcher硝岗,大家也不會(huì)陌生氢哮,launcher其實(shí)就是一個(gè)app,從功能上說(shuō)型檀,是對(duì)手機(jī)上其他app的一個(gè)管理和啟動(dòng)冗尤,從代碼上說(shuō)比其他app多了一個(gè)屬性,就是在AndroidManifest.xml文件中多了一個(gè)“<category android:name="android.intent.category.HOME" />”屬性胀溺,這個(gè)屬性就是在啟動(dòng)系統(tǒng)或者按Home鍵時(shí)會(huì)過(guò)濾這個(gè)屬性裂七,如果系統(tǒng)中只要一個(gè)應(yīng)用具有這個(gè)屬性,就會(huì)直接跳轉(zhuǎn)到這個(gè)界面仓坞,也就是這個(gè)launcher背零,如果有多個(gè),會(huì)彈出選擇框讓用戶選擇并且提示用戶是否選擇默認(rèn)設(shè)置无埃。
首先我們看一下我運(yùn)行好的launcher效果圖徙瓶,代碼在文章的最后給出,有興趣的可以star或者fork嫉称。下面這兩張圖是進(jìn)入桌面后的效果圖侦镇,第一張為首頁(yè)圖,一般為默認(rèn)頁(yè)面织阅,第二張為桌面向左滑動(dòng)后的效果圖壳繁。雙層桌面一般第一層放制快捷方式和小部件。
下面這張是第二層界面圖,主要是所有應(yīng)用的列表圖闹炉。
下面一張是長(zhǎng)按桌面縮小后顯示的菜單界面蒿赢,主要包含,壁紙渣触、小部件和設(shè)置選項(xiàng)羡棵。
點(diǎn)擊壁紙按鈕,跳轉(zhuǎn)到下面的壁紙界面昵观,在這個(gè)界面你可以更換桌面壁紙晾腔。
點(diǎn)擊小部件按鈕舌稀,跳轉(zhuǎn)到小部件展示界面啊犬,在此界面你可以通過(guò)長(zhǎng)按拖拽將小部件添加到桌面上面,方便使用和操作壁查。
點(diǎn)擊設(shè)置按鈕觉至,跳轉(zhuǎn)到設(shè)置界面,你可以設(shè)置是否旋轉(zhuǎn)屏幕和設(shè)置默認(rèn)桌面睡腿。
在桌面上長(zhǎng)按應(yīng)用圖標(biāo)或者小部件语御,桌面上的搜索框會(huì)消失,替代的是一個(gè)刪除框席怪,你將應(yīng)用圖標(biāo)或者小部件拖拽于此应闯,會(huì)執(zhí)行刪除圖標(biāo)或者刪除小部件的功能,如果你從第二層應(yīng)用圖標(biāo)列表長(zhǎng)按圖標(biāo)移動(dòng)到該刪除框會(huì)執(zhí)行卸載應(yīng)用的操作挂捻。
桌面結(jié)構(gòu)
上面介紹了桌面的基本操作碉纺,下面介紹一下桌面的基本結(jié)構(gòu)。首先看下圖:
最外層刻撒,也就是手機(jī)顯示層是一個(gè)叫做Workspace的控件骨田,其實(shí)在Workspace外層還有一個(gè)DragLayer層,在他的里面的最上面声怔,是一個(gè)叫做SearchDropTargetView的控件态贤,該控件就是搜索或者刪除應(yīng)用的控件。中間最大的一塊是CellLayout醋火,一個(gè)Workspace包含一個(gè)或者多個(gè)CellLayout悠汽,多個(gè)CellLayout橫向并排排列,每個(gè)CellLayout在寬度上占用一屏芥驳,如下圖所示:
當(dāng)用戶左右滑動(dòng)時(shí)會(huì)切換中間的CellLayout部分介粘,如下圖所示:
CellLayout主要的作用是裝在快捷方式或者小部件等。用戶通過(guò)點(diǎn)擊這些快捷方式打開(kāi)應(yīng)用晚树。中間的指示點(diǎn)叫做PageIndicator姻采,用來(lái)指示你當(dāng)前處于第幾個(gè)屏幕上面,也就是第幾個(gè)CellLayout。最下面的四個(gè)圖標(biāo)所占的位置叫做Hotseat慨亲,主要是放置短信婚瓜,撥號(hào)等最常用的應(yīng)用圖標(biāo)。用戶左右滑動(dòng)屏幕時(shí)刑棵,該控件不做滑動(dòng)處理巴刻。
當(dāng)用戶長(zhǎng)按桌面時(shí),中間的CellLayout會(huì)縮小蛉签,下面的Hotseat和上面的SearchDropTargetView會(huì)隱藏胡陪,從而顯示出隱藏的三個(gè)菜單按鈕。
桌面的基本操作和結(jié)構(gòu)就是這么多碍舍,本章只是對(duì)桌面的操作和結(jié)構(gòu)做一個(gè)概述柠座,從下一篇文章開(kāi)始講解桌面的詳細(xì)信息,包括桌面的啟動(dòng)過(guò)程片橡,數(shù)據(jù)加載過(guò)程妈经,應(yīng)用拖拽等功能。最后附上源碼捧书,有興趣的朋友可以自己下載先行研究吹泡。
源碼
Github代碼:Launcher3_mx
首發(fā)地址:墨香博客
公眾賬號(hào):Code-MX
注
本系列教程均為原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處经瓷,多謝爆哑。