android 14分屏实战之小米su7的3分屏实现方案讨论及线索征集

61 阅读3分钟

背景:

hi,粉丝朋友们: 近来有学员朋友询问到了马哥一个问题关于小米su7的分屏实现方案问题,具体小米su7的实现现象如下: 在这里插入图片描述 具体源头视频详细地址:www.bilibili.com/video/BV1UK…

针对小米su7这个分屏明显和手机分屏有一个巨大的差异,那就是手机一般是2分屏,这里是3分屏 在这里插入图片描述 那么如果要你进行小米su7的实现你有什么方案或者想法么?

调研线索征集

调研竞品是如何实现的方案,那当然需要有竞品的设备,可以进行相关的dumpsys,这里因为手上没有su7的车机和汽车可以进行dump,所以暂时没办法进行实际的dump设备查看,即无法分析出小米su7是如何实现的这个3分屏。 这里求助一下广大网友,如果有条件可以对小米su7的车机设备进行dumpsys麻烦联系一下马哥哈,执行一下以下几个dumpsys命令: 让小米su7展示3分屏的画面上进行如下命令执行

1、dumpsys window windows > 1.txt
2、dumpsys activity containers > 2.txt
3、dumspys SurfaceFlinger > 3.txt

既然暂时没有相关的竞品调研资料,那么方案就只能自己先设计啦。

方案设计1

这里因为分屏原生支持了2分屏,所以可以考虑设计成额外添加一个第三屏,这样就可以比较好兼容原来的2分屏 在这里插入图片描述 优点: 比较好兼容原来的2分屏部分逻辑,方案的设计也是和原生2分屏高度吻合 缺点: 可能需要修改较多的原生2分屏的功能逻辑等,对原来代码修改比较大,引入的bug可能较多,而且bug可能排查难度较大

方案设计2

彻底不使用原来的分屏方案,使用自由窗口方案,整体的3分屏,其实就是3个自由窗口显示着

在这里插入图片描述

优点: 不需要考虑兼容影响原生自带的2分屏代码,这样3分屏和2分屏就彻底没啥关系了,相互不影响 缺点: 需要完全0开始实现,要把原来2分屏做的相关交互拖拽动画功能全部重新实现,工作量较大

方案设计3

彻底不使用原来的分屏方案,使用虚拟屏幕方案,3分屏分别对应不同的虚拟屏幕 在这里插入图片描述

优点: 不需要考虑兼容影响原生自带的2分屏代码,这样3分屏和2分屏就彻底没啥关系了,相互不影响,而且属于虚拟屏幕展示,所以和主屏幕基本上耦合性更加小 缺点:

1、需要完全0开始实现,要把原来2分屏做的相关交互拖拽动画功能全部重新实现,工作量较大 2、而且因为多个虚拟屏幕需要渲染一般都是gpu方式渲染,会给整个渲染带来性能影响,因为每次sf的vsync工作需要多渲染3个虚拟屏幕

好了暂时想到就是上面3个方案,其实还是比较推荐方案1,毕竟交互动画体验可以较多的复用2分屏,但是复用也意味着修改较多原来的逻辑,这个暂时还没有时间实战实现这个功能,各位学员们有兴趣可以去尝试实现一下。

更多framework技术干货,请关注下面“千里马学框架”