文章目录
支持两种模式Laptop Mode与Pad Mode(笔记模式、平板模式)的ChromeOS Android
- ChromeOS中Android与Chrome之间虽然是以mojo作为通信手段,但是对平板模式切换到笔记本模式的处理,却不是mojo来做通信的
- 当ChromeOS切换笔记模式、平板模式的时候,是通过wayland来进行通信的
当模式切换时,Chrome通过wayland与Android通信
- Chrome通过wayland与Android HWComposer通信,由HWComposer将Android的画面进行缩放转换
- 然后通过jni网往上调用到FrameWork。其中,FrameWork中的
InputManager调用OnTabletModeChanged方法,通过调用oberser的观察者方法来通知各个观察者模式发生了切换。 OnTabletModeChanged的回调注册方法registerOnTabletModeChangedListener虽然是public的,但是它被声明为@hide,即这个方法不能被应用层调用,只能被FrameWork层才能使用。- 应用层可能需要通过反射
InputManager并搜索回调注册方法来实现观察,完成回调调用。
曲线救国
- 无法在应用层添加观察者,那么可以考虑其它方案:
getResources().getConfiguration()可以获取screenWidthDp和screenHeightDp,在笔记本于笔记模式和平板模式之间切换的时候,像素密度可能会发生对应的修改,这时有机会去识别当前的状态。
实际上,应用层采用相对布局、自适应布局来实现UI,在不同尺寸做到自动适应,实际上就不需要花这么大力气去适配不同尺寸的屏幕或笔记模式、窗口模式了。对于笔记模式和平板模式带来的显示上的差异,由底层的wayland/HWComposer和Framework去完成就行了,应用层按照兼容性思想来做,也不需要遇上一些复杂带坑的适配问题。



本文探讨了ChromeOS中LaptopMode与PadMode的切换机制,解析了wayland在模式切换中的作用,以及应用层如何通过自适应布局实现UI兼容性。
1万+

被折叠的 条评论
为什么被折叠?



