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

ops/2024/9/22 23:49:56/

背景:

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.ppmy.cn/ops/114477.html

相关文章

three.js shader 实现天空中白云

three.js shader 实现天空中白云 预览: https://threehub.cn/#/codeMirror?navigationThreeJS&classifyshader&idwhiteCloud 更多案例 可见 预览: https://threehub.cn import * as THREE from "three"; import { OrbitControls …

基于协同过滤+python+django+vue的音乐推荐系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于协同过滤pythondjangovue…

Facebook运营:账号类型有哪些?有必要用静态住宅IP吗?

Facebook作为月活跃用户数高达几十亿的社交媒体平台,一直不断有新用户选择加入。从个人用户的生活分享到企业用户的商务宣传推广,Facebook提供各大功能和模块来满足用户需求。相应的,用户也需要了解平台特点来进行相应的操作。本文从账号类型…

windows安装docker 本地打包代码

参考文章1:https://gitcode.csdn.net/65ea814b1a836825ed792f4a.html 参考文章2: Windows 安装docker(详细图解)-CSDN博客 一 下载 Docker Desktop 在官网上下载 Docker Desktop,可以从以下链接下载最新版本&#x…

Linux文件IO(五)-三种进程退出方法及空洞文件

1.三种进程退出方法 return 当程序在执行某个函数出错的时候,如果此函数执行失败会导致后面的步骤不能在进行下去时,应该在出错时终止程序运行,不应该让程序继续运行下去,那么如何退出程序、终止程序运行呢?有过编程…

2024年华为杯中国研究生数学建模竞赛B题(WLAN组网中网络吞吐量建模)思路

问题 1:信道容量模型的建立 背景 WLAN(无线局域网)的吞吐量与其信道容量密切相关,而信道容量是指在给定的信号与噪声比 (SNR) 下,信道能够传输的最大数据速率。香农公式为信道容量提供了理论上限: C = B log ⁡ 2 ( 1 + S N ) C &

纯前端表格导出Excel

先写好两个js文件 直接复制粘贴 文件目录是这样的 Bolb.js /* eslint-disable */ /* Blob.js* A Blob implementation.* 2014-05-27** By Eli Grey, http://eligrey.com* By Devin Samarin, https://github.com/eboyjr* License: X11/MIT* See LICENSE.md*//*global self, …

【Leetcode:1184. 公交站间的距离 + 模拟】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…