從事launcher開發也有一年有余了,雖然時間比較長了,但是由于是團隊開發,其他任務也比較多,所以一直對整個項目的完整情況沒有很好的了解,今年換了新的公司,依然是做launcher開發,從新搭建工程,因此借助這個機會完整的學習一下launcher的源碼,由于之前沒有完全接入,因此也沒有做詳細的筆記,這次從頭參與項目開發,也正好做一下詳細的筆記和知識梳理,由于公司項目商業性,為避免泄露公司項目內容,因此本系列教程只做雙層launcher的詳解,后續會教大家來定制自己的launcher。
桌面使用操作
說到launcher,大家也不會陌生,launcher其實就是一個app,從功能上說,是對手機上其他app的一個管理和啟動,從代碼上說比其他app多了一個屬性,就是在AndroidManifest.xml文件中多了一個“<category android:name="android.intent.category.HOME" />”屬性,這個屬性就是在啟動系統或者按Home鍵時會過濾這個屬性,如果系統中只要一個應用具有這個屬性,就會直接跳轉到這個界面,也就是這個launcher,如果有多個,會彈出選擇框讓用戶選擇并且提示用戶是否選擇默認設置。
首先我們看一下我運行好的launcher效果圖,代碼在文章的最后給出,有興趣的可以star或者fork。下面這兩張圖是進入桌面后的效果圖,第一張為首頁圖,一般為默認頁面,第二張為桌面向左滑動后的效果圖。雙層桌面一般第一層放制快捷方式和小部件。
下面這張是第二層界面圖,主要是所有應用的列表圖。
下面一張是長按桌面縮小后顯示的菜單界面,主要包含,壁紙、小部件和設置選項。
點擊壁紙按鈕,跳轉到下面的壁紙界面,在這個界面你可以更換桌面壁紙。
點擊小部件按鈕,跳轉到小部件展示界面,在此界面你可以通過長按拖拽將小部件添加到桌面上面,方便使用和操作。
點擊設置按鈕,跳轉到設置界面,你可以設置是否旋轉屏幕和設置默認桌面。
在桌面上長按應用圖標或者小部件,桌面上的搜索框會消失,替代的是一個刪除框,你將應用圖標或者小部件拖拽于此,會執行刪除圖標或者刪除小部件的功能,如果你從第二層應用圖標列表長按圖標移動到該刪除框會執行卸載應用的操作。
桌面結構
上面介紹了桌面的基本操作,下面介紹一下桌面的基本結構。首先看下圖:
最外層,也就是手機顯示層是一個叫做Workspace的控件,其實在Workspace外層還有一個DragLayer層,在他的里面的最上面,是一個叫做SearchDropTargetView的控件,該控件就是搜索或者刪除應用的控件。中間最大的一塊是CellLayout,一個Workspace包含一個或者多個CellLayout,多個CellLayout橫向并排排列,每個CellLayout在寬度上占用一屏,如下圖所示:
當用戶左右滑動時會切換中間的CellLayout部分,如下圖所示:
CellLayout主要的作用是裝在快捷方式或者小部件等。用戶通過點擊這些快捷方式打開應用。中間的指示點叫做PageIndicator,用來指示你當前處于第幾個屏幕上面,也就是第幾個CellLayout。最下面的四個圖標所占的位置叫做Hotseat,主要是放置短信,撥號等最常用的應用圖標。用戶左右滑動屏幕時,該控件不做滑動處理。
當用戶長按桌面時,中間的CellLayout會縮小,下面的Hotseat和上面的SearchDropTargetView會隱藏,從而顯示出隱藏的三個菜單按鈕。
桌面的基本操作和結構就是這么多,本章只是對桌面的操作和結構做一個概述,從下一篇文章開始講解桌面的詳細信息,包括桌面的啟動過程,數據加載過程,應用拖拽等功能。最后附上源碼,有興趣的朋友可以自己下載先行研究。
源碼
Github代碼:Launcher3_mx
首發地址:墨香博客
公眾賬號:Code-MX
注
本系列教程均為原創,轉載請注明出處,多謝。