Android Launcher分析和修改5——HotSeat分析
来源:互联网 发布:linux setid 编辑:程序博客网 时间:2024/05/16 17:41
转载地址:http://www.apkbus.com/android-125394-1-1.html
今天主要是分析一下Launcher里面的快捷方式导航条——HotSeat,一般我们使用手机底下都会有这个导航条,但是如果4.0的Launcher放到平板电脑里面运行,默认是没有HotSeat的,刚好我这里的运行环境类似平板,系统默认把HotSeat去掉了。办法,只能自己想办法把它弄出来,所以今天主要是分析如何在你Launcher上添加HotSeat以及分析HotSeat实现。
Hotseat配置是通过配置文件控制的,一般来说,你需不需要Hotseat只要在配件文件里面写一下就OK,不过Hotseat有一个比较麻烦的地方,就是需要注意横屏还是竖屏。默认竖屏的时候,Hotseat是屏幕底下的,横屏的时候,在屏幕右边。不知道google当时为啥要这样设计,可能是为了横屏的时候,不占用本来就不多的竖向的空间吧。不过这个设计对于一些横屏的平板电脑或者移动设备,用户体验实在不太好。
1、Hotseat配置文件
下面我们看看Hotseat的配置文件,Hotseat是属于workspace的,所以需要在workspace配置文件里面配置,打开launcher.xml就可以看到hotseat的配置,这个并不是所有launcher.xml文件都有hotseat属性。例如:layout-sw600dp文件夹下的launcher.xml就是默认没有hotseat配置,这个使用在大屏幕,平板之类的设置上。而我的设备刚好是使用这个配置。
所以把hotseat加到layout-sw600dp下的launcher.xml配置文件:
- launcher:container:需要标识为-101 ,代表是hotseat的默认按钮。
- launcher:screen:代表按钮的位置,0是第一个位置。ALlApp按钮默认是2,所以上面并没有screen为2的标签。
配置完hotseat的默认按钮后,我们需要修改hotseat.xml的配置属性才能正常显示,下面是hotseat.xml的配置,我是使用了竖屏时的hotseat配置。 上面的属性,有几个我们是需要留意,因为这是直接关系我们hotseat的显示效果。上面我已经给出了一些关键属性大部分跟我们使用一般控件是一样的,其他的launcher:XXX就是launcher自己定义的属性。上面已经给出注释。需要注意的是launcher:cellCountX和launcher:cellCountY两个属性,这个跟横向竖向的hotseat有关。另外就是从中我们也可以看到其实hotseat可以定义多行多列。因为hotseat里面其实是包含了一个CellLayout,跟workspace一样。 除了设置Hotseat的属性外,我们还需要设置workspace的属性,以为hotseat占用了一部分的空间,所以workspace就需要腾出一部分空间处理。例如原来你的workspace没有加入hotseat前是5*3设置,如果需要加入hotseat,你的workspace只能修改为5*2的配置,你需要在竖向空间流出一行的空间给hotseat使用。 2、Hotseat构造函数到这里基本上配置已经设置好。不过显示出来的效果并不是我们想象的结果,因为Hotseat内部对横向和竖向屏幕做了处理,我们需要做些修改。Launcher里面有专门管理Hotseat的类:Hotseat.java 。下面我们看看Hotseat.java的构造: 注意这里有一个大屏幕还是小屏幕的判断,这个是用来判断属于平板系统还是一般的手机系统。因为我系统是只会在横屏时使用,所以我直接设置成mIsLandscape为小屏幕,因为Hotseat里面很多获取熟悉都是区分大小屏幕。小屏幕的时候,我们使用竖向配置hotseat就可以得到相当于手机系统的hotseat效果,hotseat会显示在屏幕底下。基本上修改上面几个地方,就可以在平板屏幕底下显示hotseat。下面我们分析一下Hotseat是如何实现的。 3、Hotseat加载数据Hotseat加载数据可以分为两部分,AllApp按钮和其他默认按钮。下面我们先看看其他默认按钮是如何加载的:默认按钮加载跟workspace的默认数据加载一样,都是在LauncherModel加载。Hotseat和workspace的app类型加载方式一样, 上面是上一篇我们分析Launcher加载初始化数据的部分代码,我们可以看到,Hotseat的数据加载跟workspace的一般APP快捷方式加载是一样的,而且他们共用一个队列保存数据。具体数据加载过程分析可以查看我上一篇文章。 4、Hotseat绑定数据 hotseat绑定数据跟workspace流程基本一样,下面是hotseat开始绑定时,调用了Hotseat自身的方法清空数据。 上面配置文件分析的时候,我们也说了Hotseat里面其实也是一个CellLayout负责管理内部的元素,下面我们看看它如何绑定数据到CellLayout。在workspace.java类里面的addInScreen()方法实现。 这里只给出Hotseat关键的添加代码,其他一些相关的内容,可以查看源码。 5、Hotseat类Hotseat类里面其实东西不多,主要就是我们上面说的构造函数,另外还有下面的设置AllAPP按钮的方法。 Hotseat里面其他几个简单方法,基本上都是获取一些属性,这里就不详细分析。6、总结
- Hotseat其实也是一个CellLayout负责管理里面的所有数据。
- 大部分配置可以通过XML配置文件修改得到。
- 加载和绑定数据和workspace基本是一致的。
- Android Launcher分析和修改5——HotSeat分析
- Android Launcher分析和修改5——HotSeat分析
- Android Launcher分析和修改5——HotSeat分析
- Android Launcher分析和修改5——HotSeat分析
- Android Launcher分析和修改5——HotSeat分析
- Android Launcher分析和修改5——HotSeat分析
- Android Launcher分析和修改5——HotSeat分析
- Android Launcher分析和修改5——HotSeat分析
- Android Launcher分析和修改5——HotSeat分析
- Android Launcher分析和修改5——HotSeat分析
- Android之Launcher分析和修改5——HotSeat分析
- Android Launcher分析和修改10——HotSeat深入进阶
- Android Launcher分析和修改10——HotSeat深入进阶
- Android Launcher分析和修改
- Android Launcher分析和修改3——Launcher启动和初始化
- Android Launcher分析和修改3——Launcher启动和初始化
- Android Launcher分析和修改3——Launcher启动和初始化
- Android Launcher分析和修改3——Launcher启动和初始化
- 关于JAVA中流的flush问题
- ungui响应
- 2014,飞天众和团队等你来!
- 黄金数据查询演示示例
- 多种HTTP服务器:Misultin, Mochiweb, Cowboy, NodeJS 及 Tornadoweb测评
- Android Launcher分析和修改5——HotSeat分析
- BeeFramework学习(一):Hello World
- Unity 代码增量更新
- 获取验证码之后出现一个倒计时按钮
- file '/Applications/Xcode 2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhone
- 使用PullToRefreshListView 区分上拉还是下拉
- jquery 选中某一行
- Android实战技巧:深入解析AsyncTask与thread的区别 THREAD_POOL_EXECUTOR
- iOS UIFont 设置字体