Launcher開發——入門篇

文章概述:

1.什么是Launcher

2.新建一個Launcher工程

3.Apps去哪了

4.顯示桌面背景

最近換了新工作(?′?`),又是要去接觸新的知識了。閑話不多說,讓我們一起來認識一下今天的主角——launcher

什么是Launcher

對于初級開發者來說launcher可能還有些陌生,它俗稱“HomeScreen”也就是我們開機后看到的第一個App。launcher其實就是一個app,它的作用用來顯示和管理手機上其他App。目前市場上有很多第三方的launcher應用,比如“小米桌面”、“91桌面”等等,今天我就來說一下如何開發一款自己的launcher應用。

新建一個Launcher工程

首先我們在Android studio中新建一個工程(這里就不再贅述)。要把我們的應用程序作為一個Launcher,就需要要在AndroidManifest.xml中添加:

設置Activity屬性

此時我們的AndroidManifest.xml中應該是這樣的:

AndroidManifest.xml

當我們運行程序時可能會覺得和平常并沒有不一樣的地方,但是當我們點擊Home鍵之后就會看到選擇桌面的提示:

選擇桌面

可以看到我們開發的“Mylauncher”跟Android自帶的Google Now Launcher出現在了一起。 點擊我們自己的App并選擇always,這樣我們的應用程序就成為了系統的Home了。可能有讀者會吐槽了,這根本就不能算作Home吧,我們的App們都去哪了?

Apps去哪了

先別急,在探討如何顯示你的Apps之前我們先來學習一下什么是PackageManager。

官方給我們的定義是:

Class for retrieving various kinds of information related to the application packages that are currently installed on the device. You can find this class through getPackageManager().

這個類是用于檢索設備上應用程序的各種相關信息,您可以通過getPackageManager()來獲取它。 (翻譯的不太對,請見諒( ??з?))

通俗一點來說PackageManager是用于獲取Android系統中應用程序的信息,查詢Application相關信息(application,activity,receiver,service,provider及相應屬性等)、查詢已安裝應用、增加或刪除permission、清除用戶數據、緩存,代碼段等。既然我們需要顯示我們所有的App,那自然少不了它的幫助。

我們可以調用PackageManager的queryIntentActivities()方法來獲取一個關于App信息(ResolveInfo)的集合,這個ResolveInfo對象中就包含了應用程序的程序名、包名、入口類名等信息。代碼如圖所示:

獲取ResolveInfo集合

當我們獲取了ResolveInfo集合后就可以為所欲為了(霧),我這里采用的是用一個GridView來顯示所有的App信息,示例代碼如下:

顯示App的圖標和名稱

能顯示了還不算我們還要能點擊跳轉( ′???`),給GridView的item添加單擊事件:

點擊跳轉

經過這么幾步之后,我們的launcher就可以顯示所有的App并可點擊跳轉了。但是讀者可能又會吐槽了,沒有壁紙也好意思說自己是桌面?沒關系,我們的背景馬上就來~

設置桌面背景

首先第一步我們需要先讓背景顯示出來,在res/valuses/styles.xml文件下添加如下代碼:

設置樣式

接著在AndroidManifest.xml中使用這個Theme:

使用樣式

當我們再次運行程序時就可以顯示我們的桌面了,一個簡單的Launcher應用也就開發完成了。

運行結果

這僅僅只是一個簡單的入門,接下來如何設置壁紙、顯示widget等功能,我會陸續的進行講解。感謝各位的收看,如有那里寫的不對還請各位指教(?′?`?)

推薦閱讀:

墨香帶你學Launcher系列

PackageManager詳解

PackageManager'API

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,001評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,786評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,986評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,204評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,964評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,354評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,410評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,554評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,106評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,918評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,093評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,648評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,342評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,755評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,009評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,839評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,107評論 2 375

推薦閱讀更多精彩內容