文章概述:
1.什么是Launcher
2.新建一個Launcher工程
3.Apps去哪了
4.顯示桌面背景
最近換了新工作(?′?`),又是要去接觸新的知識了。閑話不多說,讓我們一起來認識一下今天的主角——launcher
什么是Launcher
對于初級開發者來說launcher可能還有些陌生,它俗稱“HomeScreen”也就是我們開機后看到的第一個App。launcher其實就是一個app,它的作用用來顯示和管理手機上其他App。目前市場上有很多第三方的launcher應用,比如“小米桌面”、“91桌面”等等,今天我就來說一下如何開發一款自己的launcher應用。
新建一個Launcher工程
首先我們在Android studio中新建一個工程(這里就不再贅述)。要把我們的應用程序作為一個Launcher,就需要要在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集合后就可以為所欲為了(霧),我這里采用的是用一個GridView來顯示所有的App信息,示例代碼如下:
能顯示了還不算我們還要能點擊跳轉( ′???`),給GridView的item添加單擊事件:
經過這么幾步之后,我們的launcher就可以顯示所有的App并可點擊跳轉了。但是讀者可能又會吐槽了,沒有壁紙也好意思說自己是桌面?沒關系,我們的背景馬上就來~
設置桌面背景
首先第一步我們需要先讓背景顯示出來,在res/valuses/styles.xml文件下添加如下代碼:
接著在AndroidManifest.xml中使用這個Theme:
當我們再次運行程序時就可以顯示我們的桌面了,一個簡單的Launcher應用也就開發完成了。
這僅僅只是一個簡單的入門,接下來如何設置壁紙、顯示widget等功能,我會陸續的進行講解。感謝各位的收看,如有那里寫的不對還請各位指教(?′?`?)
推薦閱讀: