当前位置: 首页 > article >正文

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


http://www.kler.cn/news/319557.html

相关文章:

  • 智慧城市运营模式--政府和社会资本合作
  • 【Java数据结构】--- 优先级队列
  • fastjson的json字符串转List
  • 移动技术开发:ListView水果列表
  • C++ prime plus-7-編程練習
  • 2024年华为杯中国研究生数学建模竞赛E题(高速公路应急车道紧急启用模型)思路
  • Unity 的Event的Use()方法
  • 《Detection of Tea Leaf Blight in Low-Resolution UAV Remote Sensing Images》论文阅读
  • 海信智能电视的使用心得
  • 量子密码基本原理和必要性
  • 私有大模型、公有大模型介绍及区别
  • 下载分享抖音视频并转成文本
  • python爬虫:从12306网站获取火车站信息
  • 二分查找及变体
  • Linux系统(Ubuntu)(下载篇)
  • [SDX35+WCN6856]SDX35 +WCN6856 remount firmware出现失败问题原因及解决方案
  • 在线海外代理IP科普:代理主机与代理端口号的作用
  • MATLAB无线网络设计工具:从理论到实践
  • 任意长度并行前缀和 扫描算法 《PMPP》笔记
  • 接口加解密及数据加解密
  • 动手学深度学习(李沐)PyTorch 第 1 章 引言
  • 新零售社交电商系统的卷轴模式开发:重塑消费体验与商业生态
  • 格雷母线电缆头安装方法视频-武汉正向科技
  • MySQL自定义排序:使用ORDER BY FIELD实现灵活的数据排序
  • 【Java 问题】基础——Java 概述
  • 机器学习周报(9.16-9.22)-Pytorch学习(四)
  • 昇思量子计算系列教程-龙算法
  • 【Webpack】Hash 码
  • 15.10 在k8s部署grafana-deployment并导入k8s大盘
  • 计算机视觉的应用34-基于CV领域的人脸关键点特征智能提取的技术方法