Launcher3 总结
来源:互联网 发布:淘宝小零食 知乎 编辑:程序博客网 时间:2024/05/23 12:38
今年6月开始,公司开始涉及到Android平板开发,需要定制自己的桌面,开始学习Launcher3源码,在此基础上做修改。Launcher3代码是Android4.4中桌面代码。我的理解是,Launcher3其实也是一个APP,但是相较于其他APP,他在手机启动后将会被启动,并且能够读取其他APP数据,放出其他APP入口,并且能够调用Android系统自带的其他程序。
我主要负责定制UI界面,只显示指定的APP,并确定APP图标在Launcher上的位置。
看了Launcher3代码后,发这部分逻辑主要在在两个类以及一个xml中实现,分别是LauncherAppsConpatV16.java、LauncherAppsConpatVL.java 与 default_workspace_5*6.xml。
default_workspace_5*6.xml在Launcher3第一次启动的时候调用,定义了桌面的默认布局。在非定制机中,这个文件里面暴露的接口一般仅仅是系统自带APP,比如设置、照相机、图库等等。在我们的代码中,主要是文件夹folder和APP的图标favourite。
<favorite launcher:packageName="" launcher:className="" launcher:screen="2" launcher:x="2" launcher:y="0"/>favorite是直接现实在桌面上的APP图标。packageName是包名,className是启动时的类名,screen是该图标需要位于第几屏,x是图标的横坐标,y是图标的纵坐标。
<folder launcher:title="@string/folder_name_chines" launcher:screen="2" launcher:x="0" launcher:y="0"> <favorite launcher:packageName="" launcher:className="" /> <favorite launcher:packageName="" launcher:className="" /> <favorite launcher:packageName="" launcher:className="" /> </folder>
一个flolder标签就是一个文件夹,title是文件夹的名字,screen是该文件夹位于第几屏,x是在该屏幕上的横坐标,y是在该屏幕上的纵坐标,都是从0开始。其中的favorite就是该文件夹中需要现实APP图标,需要填写APP的包名和启动时的类名,但是不需要写screen、x、y等,在该文件夹中将按照顺序现实这几个图标。
LauncherAppsConpatV16.java 与 LauncherAppsConpatVL.java中的getActivityList方法将返回手机中所有APP的信息,在每一次Launcher启动时都将会调用,但这两个方法中只有一个会被调用,这和设备相关,具体的调用原则并没有查询。在LauncherAppsConpatV16.java 中通过APP的包名来限制只暴露哪些APP,LauncherAppsConpatVL.java中通过APP启动时的类名来限制出现哪些APP。这两个方法最后返回的list都是最终将会在桌面上显示的APP信息的list。
在LauncherModel.java中,对返回的APP list进行了排序。
Collections.sort(apps, new LauncherModel.ShortcutNameComparator(mLabelCache));
如果不需要的话,直接可以将这部分代码去掉。可以在上面提到的两个类的getActivityList方法中,让返回的list是你需要的顺序就好。
- Launcher3 总结
- 5.1 Launcher3 修改总结
- Kitkat Launcher3 源码分析总结
- launcher3
- Launcher3
- Android Launcher3的自定义修改总结
- Launcher3--初识Launcher3
- Launcher3--初识Launcher3
- Launcher3 loadAndBindWorkspace
- Launcher3--拖拽
- Launcher3--壁纸
- Launcher3--抽屉
- LAUNCHER3讲解
- Android launcher3 -- launcher3源码1
- Android launcher3 -- launcher3源码2
- Android launcher3 -- launcher3源码3
- Launcher3常见定制修改
- launcher3时钟小部件
- HDU 2175
- Oracle数据库关闭异常(ORA-01089: immediate shutdown in progress - no operations are permitted)的解决方法
- cpufreq 之userspace governe的实现
- hdu 1203 I NEED A OFFER!
- Css暴力绘制圆角矩形
- Launcher3 总结
- BaseAdapter优化使用
- 【STL】非变异算法之计数
- 如何使用命令符启动Tomacat
- CentOS7判断是否联网
- 面试题12 (打印1到最大的n位数)
- Java文件上传的两种方式(uploadify和Spring默认方式)
- Gradient boosting
- Maven 指定仓库