日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

手把手教你打造一款个人专属Android桌面

發布時間:2023/12/3 综合教程 32 生活家
生活随笔 收集整理的這篇文章主要介紹了 手把手教你打造一款个人专属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桌面的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。