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

安卓framework单屏幕Display秒双/多屏互动相关需求改进-wms实战开发

背景

前面已经给学员朋友们分享过单屏秒变双屏的成果展示,具体详情可以点击这里:
https://mp.weixin.qq.com/s/KdYTLMuXiBdjM0kZmYKzPg
在这里插入图片描述

一些vip学员朋友也纷纷求助马哥的实现patch代码,想用于公司的实战项目实现。但是在公司需求实现要求和马哥这边的实现还是会有一些需求上的变更和设备环境差异,所以使用过程中学员朋友们也提出了一些额外的问题。

下面来一一讲解一下相关的需求和bug问题。

实现左右结构的单屏变多屏

正常马哥实现的是上下结构的单屏变多屏
在这里插入图片描述
但是学员朋友很多可能是车机厂商,或者平板等横屏设备厂商,所以他们需求往往都是需要变成左右的布局方式。

针对这个需求其实基于马哥的patch修改还是非常简单的,只需要修改如下两个部分:

1、需要定义好一个prop,根据prop来判断是上下结构还是左右结构
2、因为上下结构已经实现,如果左右结构,针对触摸部分,如果左右结构需要更改触摸区域的宽度变宽
3、针对虚拟屏幕的移动也需要判断如果左右结构,则需要平移是x方向坐标不是y方向坐标

具体实现成果如下:
在这里插入图片描述

发现有些设备或者场景第二屏不显示

具体看到现象如下:
在这里插入图片描述

这个问题其实在马哥自己设备上从来没有发现过,但是有的vip学员朋友和我反馈有这种黑屏不显示情况,针对这个问题第一时间进行了分析,主要通过提供的dumpsys SurfaceFlinger来查看
发现有如下线索
在这里插入图片描述
正常显示的设备dumpsys可以看到每个图层都是DEVICE合成方式即HWC合成,但是异常设备提供的dumpsys发现如下:
在这里插入图片描述

问题复现路径:
只需要让自己图层多几个使用GPU合成既可以,具体怎么让图层GPU合成呢?这个在SurfaceFlinger专题有讲解过,可以考虑让自己窗口设置圆角裁剪既可以。
一旦设置圆角后既可以复现上面的第二屏幕黑屏问题。

问题原因解决思路:
1、原因属于gpu合成部分和原理hwc有差异,gpu合成属于绘制到新的surface上,这个surface可能依然受到主屏幕屏幕宽高限制

2、解决思路只能是针对这种gpu绘制情况需要特殊处理,不限使用主屏幕逻辑宽高限制,而是使用物理宽高

ps:相关单屏秒变多屏patch可以私聊马哥获取(仅限vip学员)

更多framework详细代码和资料参考如下链接

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.mrgr.cn/news/21891.html

相关文章:

  • 4-4.Andorid Camera 之简化编码模板(获取摄像头 ID、选择最优预览尺寸)
  • 网络安全运维培训一般多少钱
  • AI学习指南深度学习篇-带动量的随机梯度下降法简介
  • java后端服务监控与告警:Prometheus与Grafana集成
  • 实时通信利器:Web Broadcast Channel API 全面解读
  • Java+Swing实现的五子棋游戏
  • 单GPU一分钟生成16K高清图像!新加坡国立发布LinFusion:无缝兼容Stable Diffusion插件
  • Ubuntu22.04回退系统内核
  • SQL的增删改查CRUD练习知识点(day27)
  • 一些数学经验总结——关于将原一元二次函数增加一些限制条件后最优结果的对比(主要针对公平关切相关的建模)
  • 《战锤40K:星际战士2》超越《黑神话》 登Steam热销榜首
  • 分布式锁-Redisson 可重入锁
  • 算法:判断一个整数是不是2的阶次方
  • win11如何录屏
  • Java | Leetcode Java题解之第392题判断子序列
  • 配置Microsoft Exchange接受域的详细指南
  • XGBoost算法-上
  • 什么是Kubernetes RBAC?
  • mac|安装nginx
  • 【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述