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

news/2025/2/13 1:48:09/

实现方式两种

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 ,就是专门为拖拽定义了一个接口


http://www.ppmy.cn/news/2344.html

相关文章

软件测试——用例

一、测试用例 1.定义 向被测试系统发起的一组集合,包含测试环境、测试步骤、测试数据、预期结果 2.为什么软件测试人员要写测试用例? (1)测试用例是测试执行的依据 (2)测试用例可以复用,在进行回…

springboot构建RESTful 风格应用

Spring Boot 构建 RESTful 风格应用 1.Web开发的两种模式: 前后端不分离: 以前没有移动互联网时,我们做的大部分应用都是前后端不分的,比如jsp,或者thymeleaf等后端分离模板,在这种架构的应用中&#xf…

Spring Cloud Alibaba整合Sentinel进行服务熔断降级

一、下载Sentinel Dashboard控制台服务 Releases alibaba/Sentinel GitHub 一样的,根据自己的Spring Cloud Alibaba版本下载相应版本的Sentinel 启动服务,可以指定端口 java -Dserver.port8849 -Dcsp.sentinel.dashboard.serverlocalhost:8849 -Dp…

vue学习笔记(一)-vue基础语法

视频教程:尚硅谷Vue2.0Vue3.0全套教程丨vuejs从入门到精通_哔哩哔哩_bilibili 相关文档:Vue核心 Vue简介 初识 (yuque.com) 兼容性 Vue 不支持 IE8 及以下版本,因为 Vue 使用了 IE8 无法模拟的 ECMAScript 5 特性。但它支持所有兼容 ECMAS…

led台灯哪个牌子效果最好?2022最新国产led灯品牌排行

目前台灯的发展非常迅速,已经到了全面led灯的时代,传统的卤素灯已经近乎完全淘汰,这不仅仅是跟技术的发展有关,也跟led灯本身的优势有关,各方面很适合做成护眼灯。 护眼灯为什么都是led灯? 护眼台灯使用le…

CSS 实现音频loding动画

前言 👏实现一个音频loading动画还蛮有趣的,速速来Get吧~ 🥇文末分享源代码。记得点赞关注收藏! 1.实现效果 2.实现步骤 定义css变量:父容器高度为–h,可以动态设置loading的高度 :root {--h: 80px;}父…

JAVA EE,一文彻底聊明白

关于JAVA EE的论述,JAVA EE和Spring的论述在第二、三章节。 目录 1.JAVA的发展史 2.JAVA EE 3.JAVA EE和Spring 1.JAVA的发展史 JAVA语言于1995年面世,主要开发者为——James Gosline,后被称为JAVA语言之父。最早该语言叫Oak,…

醛基-PEG-纤维二糖 Cellobiose-CHO 纤维二糖-醛基

醛基-PEG-纤维二糖 Cellobiose-CHO 纤维二糖-醛基 羰基中的一个共价键跟氢原子相连而组成的一价原子团,叫做醛基,醛基结构简式是-CHO,醛基是亲水基团,因此有醛基的有机物(如乙醛等)有一定的水溶性。 中…