手把手教你打造一款个人专属Android桌面
實現方式兩種
1.從頭到尾寫一個apk然后把系統的屬性加上去,然后啟動的時候默認就指定到這個apk的包名,他就啟動,
2.我們基于Androidlauncher3的源碼去做一個定制化的修改
分析一下這兩種的區別,
自定義,要有豐富的Android開發經驗,并且要對自定義控件比較熟悉 對事件分發處理一定要非常的熟悉,
?
?quickstep是快捷啟動源碼,核心源碼在src里面,
allapps 是默認從底部劃上來?
應用通知,默認應用,把主屏幕應用換一下
pixel是原生啟動器,默認桌面,往上滑,所有的應用都出現了,
?
?allapps目錄就是這個👆
search就是上面的搜索框,anim動畫,badge桌面小圖標,小圓點提示之類的東西,compat兼容低版本兼容,config一些配置? dragndrop就是核心的處理他的拖拽邏輯
?folder桌面文件夾,兩個應用拖拽在一起
?graphics主要是一些圖片處理 keyboard是日志,model 模型類 notification通知
pageindicators頁面滑動指示器,popup彈窗
provider廣播
shortcuts快捷方式 是否把你的apk添加到桌面?
states 狀態改變,
touch觸摸
util工具類? views自定義view? widget在launcher是非常注重的,微鍵就是widget
長按會彈出popup? 核心最難的就是widget
其他這些東西都是某文件夾 itenm?launcher
這個是android p 9.0.0_r61的源碼,?
第一件事找到他的AndrodNan1feSt,Xml
?BackupAgent是一個備份的一個代理是繼承Context的一個父類,不是繼承applacation 這和我們普通app開發是有區別的 因為這里面有一個備份的一個代理,就是他可以...context 備份 數據存儲,比較復雜,
onrestore恢復的時候,
onRestoreFinished備份的時候,恢復完成的時候,他就調用這個東西👇
activity有兩個👇
?settingactivity其實就是他的設置,做app開發一般是用不到的?
有一些通知 桌面圖標
?
還有一些fragment? ?還有一些參數傳遞之類的,動畫呀等等,就是有些數據的存儲 他是放在這個里面的 關于launcher的默認設置是在settingactivity里面,所以這個也不是重點
真正的重點是launcheractivity 啟動模式是singleTask 是單一任務棧模式 是activity的一個啟動模式,比如說是否彈出鍵盤,是否全屏,
這個里面加了也就是說你加了這些之后,他就可以識別到你是一個launcher的一個入口,就起這個作用
然后最核心的?launcher繼承BaseBragginghrtivits 他是一個可以滑動的activity 允許支持拖拽,
BaseActivity實現了UserEventDclegate訂閱的?UserEventDclegate他是用戶事件,就是它可以處理任務事件的監聽 主要做監聽的一個東西
1.是一個activity 2.他具有滑動的屬性,
布局👆
跟布局是LaUIncherRootView
最核心的有DragLayer?WorkspacePa8eIndicator 然后下面是一個指示器👇
?
?all_apps其實就是這個底部了,
?hotseat就是下面的這一塊 ,五個圖標👇
如果想把指示器換掉,我們只需要把這一塊代碼換成我們自定義控件就可以
?DragLayer就是一個拖拽的一個圖層,繼承BaseDragLayer 又繼承Insettab1eFrameLayout 也就是說他可以承載很多子布局的,
Workspace其實就是我們整個桌面的一個容器,他能夠承載 從狀態欄下面,一直到虛擬按鍵下面,這么高的范圍都是他的Workspace
?DragLayer里面使用了DragController ,就是專門為拖拽定義了一個接口
Workspace他是有多個cellayout? cellayout 是我們每個頁面顯示幾個app 比如他是顯示5行5列的,這一個容器就是一個cellayout 長按占幾格 你就知道他就是一個5行5列的一個布局
cellayout可以將他的item拖出去,也可以容納拖進來的item 也就是說當前的容器他就是cellayout 它里面可以放這樣很多的item 它可以接收 把外面的這個item拖進來,并且也可以接收把當前的item拖出去
?
?
?Drop& Drag模型,這個模型是一個比較核心的,在我們android sdk里面其實也是有?Drop& Drag一個框架的,其實他這個框架是從android底層里面的?Drop& Drag里面把他抽離出來的,
是底層核心,
DragSource主要是他里面處理的一些拖動對象的一些容器
比如AIIAppGridView, Workspace他都可以來處理
DropTarget 他可以放被拖動的容器 比如說在launcher中有folder,Workspace bottombar等
這個Dragsource它里面承載的既可以Dragsource也可以是DropTarget
如果說自己要去實現一個拖拽的功能的話,其實我們可以用DragSource和DropTarget這兩個類把他直接單獨拉出來 再做一些變更,因為他里面無非傳入的是一些view
?下載源碼運行的時候會報各種錯,主要是
?
?gradle編譯版本可以點開help about里面的 就是當前Android studio版本
?如果說你是2020.3.1的話,那么你用7.0就可以
如果你是低版本的,比如說你是3.5.3 你就用3.5.3
如果你不加 他會編譯報錯, 他會說build protos他找不到,所以說要把這幾個加上,加上之后你再重新編譯他基本上就沒什么錯了 他不報錯之后然后你就可以正常運行。
設置---應用和通知---默認啟動應用???????
?換成Launcher3
?手把手教你打造一款個人專屬Android桌面_嗶哩嗶哩_bilibili
?
?
總結
以上是生活随笔為你收集整理的手把手教你打造一款个人专属Android桌面的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 摇步器在摇为什么步数没有增加 摇步器在摇
- 下一篇: SSH介绍与神器Tabby