android 14分屏实战之小米su7的3分屏实现方案讨论及线索征集
背景:
hi,粉丝朋友们:
近来有学员朋友询问到了马哥一个问题关于小米su7的分屏实现方案问题,具体小米su7的实现现象如下:
具体源头视频详细地址:https://www.bilibili.com/video/BV1UK421a7iB
针对小米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详细代码和资料参考如下链接
投屏专题部分:
https://mp.weixin.qq.com/s/IGm6VHMiAOPejC_H3N_SNg
hal+perfetto+surfaceflinger
https://mp.weixin.qq.com/s/LbVLnu1udqExHVKxd74ILg
其他课程七件套专题:
点击这里
https://mp.weixin.qq.com/s/Qv8zjgQ0CkalKmvi8tMGaw
视频试看:
https://www.bilibili.com/video/BV1wc41117L4/
参考相关链接:
https://blog.csdn.net/zhimokf/article/details/137958615
更多framework假威风耗:androidframework007