【源碼解析】Launcher 8.0源碼(2)---Launcher的基礎(chǔ)知識整體概述

上一篇我們講述了Launcher桌面的基本結(jié)構(gòu)窖贤,接下來這一片我們來講解一下Launcher的基礎(chǔ)知識砖顷,包括他的一些類的用處和一些布局的介紹。

Launcher3源碼涉及到的android基礎(chǔ)知識

如果想學習Launcher就必須熟練掌握這些android基本知識赃梧,權(quán)重比例在圖中都標明了滤蝠。不會的可以先學習一下這些知識。


QQ圖片20181010221006.png
基礎(chǔ)知識

這里我們先介紹一下Launcher里面常用類的主要功能

  • Launcher:繼承Activity授嘀,主界面物咳,用來顯示圖標,widget和文件夾等蹄皱,它的布局就是桌面的基本結(jié)構(gòu)览闰,布局內(nèi)部為DragLayer。
  • LauncherModel:繼承BroadcastReceiver巷折,是一個廣播接收器压鉴,用來接收廣播,主要作用是加載數(shù)據(jù)锻拘,處理數(shù)據(jù)油吭,保存桌面狀態(tài),內(nèi)部類LoaderTask用來初始化桌面。
  • LauncherProvider:繼承ContentProvider上鞠,主要處理數(shù)據(jù)庫的操作际邻。
  • LauncherAppState:單例模式的全局管理類,主要初始化一些對象注冊廣播芍阎,獲取硬件設(shè)備信息世曾。
  • compat:兼容包,帶這個后綴的都是做兼容處理的類谴咸,比如(LauncherAppsCompat 【App列表的兼容類】AppweightManagerCompat【Appweight的兼容類】)轮听。
  • InvariantDeviceProfile:一些不變的設(shè)備相關(guān)參數(shù)管理類,內(nèi)部包含了橫豎屏模式的DeviceProfile岭佳。
  • WidgetPreviewLoader:存儲Widget信息的數(shù)據(jù)庫血巍,內(nèi)部創(chuàng)建了數(shù)據(jù)庫widgetpreviewsdb。
  • LauncherStateTransitionAnimation:各類動畫總管處理類珊随,負責各種情況下的各種動畫的效果處理述寡。
  • IconCache:圖標緩存類,應(yīng)用程序icon和title的緩存叶洞,內(nèi)部類創(chuàng)建了數(shù)據(jù)庫app_icons.db鲫凶。
  • LauncherAppWidgetHost:AppWidgetHost子類,是桌面插件宿主衩辟,為了方便拖拽等才繼承處理螟炫。
  • LauncherAppWidgetHostView:AppWidgetHostView子類,配合LauncherAppWidgetHost得到HostView艺晴。
  • LauncherRootView:豎屏模式下根布局昼钻,繼承了InsettavleFrameLayout,控制是否顯示在狀態(tài)欄下面封寞。
  • DragLayer:一個用來負責分發(fā)事件的viewGroup然评。
  • DragController:DragLayer只是一個ViewGroup,具體的拖拽的處理都放到了DragController中狈究。
  • BubbleTextView:圖標都基于他沾瓦,繼承自TextView。
  • DragView:拖拽圖標時跟隨手指移動的view谦炒。
  • Folder:打開文件夾展示的view贯莺。
  • FolderIcon:文件夾圖標。
  • DragSource宁改、DrogTarget:拖拽接口缕探,DragSource表示圖標從哪里開始拖拽,DrogTarget表示圖標被拖到了哪里还蹲。
  • ItemInfo:桌面上每個Item的信息數(shù)據(jù)結(jié)構(gòu)爹耗,包括在第幾屏第幾行耙考,第幾列,寬高等信息潭兽,該對象與數(shù)據(jù)庫中記錄一一對應(yīng)倦始,該類有多個子類如:FolderIcon的FolderInfo,BubbleTextView的shorcutInfo山卦。
默認圖標配置
default_workspace.xml

我們知道當我們在啟動Launcher的時候桌面會有一些已經(jīng)配置好的圖標鞋邑,其實在第一次運行Launcher的時候會讀取一個配置xml文件來進行布局(launcher/res/xml/default_workspace.xml)這個文件可以配置App的快捷方式,weight账蓉,search搜索欄等枚碗。(具體的內(nèi)容可以去源碼中查看,這里只貼出來一部分)
文件中的一些屬性:

    <appwidget
        launcher:packageName="com.google.android.googlequicksearchbox"
        launcher:className="com.google.android.googlequicksearchbox.SearchWidgetProvider"
        launcher:screen="0"
        launcher:x="0"
        launcher:y="0"
        launcher:spanX="4"
        launcher:spanY="1" />
<favorite
        launcher:packageName="com.android.vending"
        launcher:className="com.android.vending.AssetBrowserActivity"
        launcher:screen="0"
        launcher:x="-1"
        launcher:y="-1" />

<favorite>:程序快捷鍵屬性標簽铸本。
<appwidget>:插件
其屬性有:
launcher:className:應(yīng)用的類名肮雨。
launcher:packageName:該應(yīng)用的包名。
launcher:screen:當前屏幕位置箱玷,0-4屏怨规,共5屏。
launcher:x:圖標X位置锡足,左上角第一個為0波丰,向右遞增0-4共5個。
launcher:y:圖標Y位置舱污,左上角第一個為0呀舔,向下遞增弥虐,0-2共3個扩灯。
launcher:spanX:在X方向上所占格數(shù)。
launcher:spanY:在Y方向上所占格數(shù)霜瘪。

default_workspace_4*4.xml
543562-3291a8f4da44993a.png

接下來我們可以看到有一些這樣的文件:
default_workspace_3 * 3.xml
default_workspace_4 * 4.xml
default_workspace_5 * 5.xml
default_workspace_5 * 6.xml
這些事我們默認的布局文件3 * 3,4 * 4,5 * 5,5 * 6表示桌面圖標的列數(shù)和行數(shù)珠插,可以根據(jù)屏幕的大小來進行適配選擇用那一個布局,(具體適配文件是launcher/res/xml/device_profiles.xml)具體操作后面的文章會詳細解釋颖对。

友情鏈接:Launcher3屏幕適配

基礎(chǔ)知識就講到這里捻撑,接下來的文章將正式進入Launcher源碼的分析。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缤底,一起剝皮案震驚了整個濱河市顾患,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌个唧,老刑警劉巖江解,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異徙歼,居然都是意外死亡犁河,警方通過查閱死者的電腦和手機鳖枕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來桨螺,“玉大人宾符,你說我怎么就攤上這事∶鹣瑁” “怎么了魏烫?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長缠局。 經(jīng)常有香客問我则奥,道長,這世上最難降的妖魔是什么狭园? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任读处,我火速辦了婚禮,結(jié)果婚禮上唱矛,老公的妹妹穿的比我還像新娘罚舱。我一直安慰自己,他們只是感情好绎谦,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布管闷。 她就那樣靜靜地躺著,像睡著了一般窃肠。 火紅的嫁衣襯著肌膚如雪包个。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天冤留,我揣著相機與錄音碧囊,去河邊找鬼。 笑死纤怒,一個胖子當著我的面吹牛糯而,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播泊窘,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼熄驼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了烘豹?” 一聲冷哼從身側(cè)響起瓜贾,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎携悯,沒想到半個月后祭芦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡蚌卤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年实束,在試婚紗的時候發(fā)現(xiàn)自己被綠了奥秆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡咸灿,死狀恐怖构订,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情避矢,我是刑警寧澤悼瘾,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站审胸,受9級特大地震影響亥宿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜砂沛,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一烫扼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧碍庵,春花似錦映企、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至苹享,卻和暖如春双絮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背得问。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留椭赋,地道東北人或杠。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓哪怔,卻偏偏與公主長得像向抢,于是被迫代替她去往敵國和親认境。 傳聞我的和親對象是個殘疾皇子挟鸠,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,099評論 25 707
  • 用兩張圖告訴你,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料硼身? 從這篇文章中你...
    hw1212閱讀 12,723評論 2 59
  • 1硅急、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,980評論 3 119
  • 真相往往掌握在少數(shù)人的手里佳遂,原因不是發(fā)現(xiàn)真相的太少营袜,而是相信真相的太少。
    南山青閱讀 131評論 0 1
  • 寧愿做燈紅酒綠里張牙舞爪的鬼丑罪,也不愿做平淡生活里委屈求全的誰荚板,雖不愿但我卻一直委屈求全一切的一切都是為了你啊。
    94b45152252c閱讀 193評論 0 1