翻滾的鹹魚 -
氛圍燈動態屏保取色方案一
氛圍燈並不支持所有的顏色,只能支持256色,所以在取到圖片顏色後需要根據結果顏色去跟氛圍燈所支持的256色對比,取最接近的結果色,然後同步到氛圍燈顯示
取色流程
取色需要用到原生 Palette.from(bitmap).generate() 方法,通過量化算法分析位圖的像素顏色分佈,提取最具代表性的顏色組合,也有異步獲取方法,下面方法都處於子線程,所以這裏直接使用同步方法
查看androidx.
移動端開發
翻滾的鹹魚 -
氛圍燈動態屏保取色方案二
hue查找:整體偏差不會很大,但是對於亮度較高存在誤差,精準度不夠
lab查找:整體一般,但是精準度較好,不過算法複雜,增加耗時
hue色相查找存在誤差,在有限的256色中,匹配的規則需要調整
這裏使用lab算法提高精準度
RGB轉Lab
fun rGBToLab(r: Int, g: Int, b: Int): DoubleArray {
// 處理負值(如-256
移動端開發
翻滾的鹹魚 -
Launcher 桌面源碼筆記一
3D車模通過TaskView顯示在Launcher,首先需要知道,為什麼要用TaskView,而不是Activity,然後在説加載流程
1、surface比activity等效率更高,特別是針對車模跟地圖等重量級場景
2、切換桌面等場景時,可以更精確的控制暫停恢復
3、進程隔離,更精細的生命週期管理跟控制
4、taskView中SurfaceControl的跨進程綁定機制(reparent操作)效
移動端開發
翻滾的鹹魚 -
Launcher 桌面源碼筆記二
車模桌面加載成功後,需要各種交互
切換桌面處理
先補充如何切換桌面,初始化需要指定一個默認桌面,初始化其實兩個桌面都會一起加載,假設默認是車模桌面,地圖將不會初始化操作,但是地圖桌面會內嵌到Launcher中
兩個桌面是互斥的,基於這種模式下,就需要隱藏另一個桌面,因為切換動效的緣故,這裏直接使用setTranslationX移出屏幕外處理
為了讓兩個桌面互斥,需要通過mActivityManag
移動端開發
翻滾的鹹魚 -
Launcher 卡片框架多模塊集成
方案一、aar架包集成
最簡單直接的方案,卡片側實現,打成aar包提供到launcher顯示
方案二、AppWidget
原生的桌面小組件方案,被限制無法自定義view
底層通過BroadcastReceiver實現
方案三、插件方案
插件方案有好幾種,實現原理都是通過配置實現,其中有Service,BroadcastReceiver,Plugin
在SystemUI模塊中,狀態欄等模塊很多使用的
移動端開發