由于工作的原因,对Android的桌面有了一些了解。之前一段时间对桌面的构成十分模糊,最近看代码该代码发现渐渐有了感觉,所以准备写一系列分析安卓桌面的文章。
市面上有很多桌面产品,比如91桌面,go桌面,小米桌面等等,虽说千差万别,但都完成了桌面的基本任务,比如说组织图标,拖动图标,滑动页面,显示小工具等等功能。桌面跟其他Android App很大的不同是,他只有一个Activity,但是这个Activity却十分复杂,用几个自定义View把Android的触摸事件的处理玩儿的眼花缭乱,没有长时间的折腾是很难熟悉的。
我分析的代码主要是Android 4.4 上的Launcher3,就是原生桌面(以后我会交替使用Launcher3和桌面这俩叫法,其实指的是一个东西)。他的代码在这里获取:
https://android.googlesource.com/platform/packages/apps/Launcher3/
git库的地址也在网页中也有显示了,可惜的是以上代码需要在源码中编译(下载整个Android源码,完整编译,然后再对桌面进行修改,单个编译)。不过我进行了简单的更改使得它可以在Android Studio中编译通过,链接在这里:
https://github.com/fookwood/Launcher3
大致就是删除了两个文件,增删几行代码,你可以从历史提交记录中查看。好了,如果你从上面链接中下载了代码并且导入到了IDE当中,不妨在自己的手机上运行下看看效果,对桌面有个感性认识。
算是给自己挖了一个大坑,不知道什么时候能够填满。主要有以下东西要填:
- Launcher代码结构
- Launcher的加载启动流程
- Launcher的布局构成
- 图标的拖拽流程
- 分屏的滑动流程
- 。。。
恩,就这样.
PS:后续的文章请点页面上方的“ANDROID”,^_^
博主,Launcher3 我把src,res还有Androidmainfest.xml 拷进去新建工程 可以运行,我想知道需要ndk编译吗?不然Android.mk 是干嘛的
这个是AOSP里面自带的,我没有细看。在eclipse里编译这个文件就可以去掉了,不需要ndk。
楼主你好,请问怎么设置默认的launcher3桌面呢,修改default_workspace.xml文件没有作用啊,4.4的源码
android.mk 是源码编译各个组件和app时的配置文件
你好,公司突然做launcher这方面的东西,可以问下你吗?