aosp13自由窗口项目出现图库app划线不全bug修改-安卓framework实战项目

news2024/9/22 7:36:40

背景

在学习了马哥的分屏自由窗口pip专题后,进行了相关的自由窗口等比例放大操作,但是操作测试过程中学员朋友们有发现图库app进入自由窗口进行操作放大有红框显示不全的问题。
在这里插入图片描述但是使用图库app时候发现红框居然显示不完整,具体效果如下图:
在这里插入图片描述
针对这个问题请问学员朋友们知道啥原因么?知道该如何分析修改么?下面就来带大家手把手分析该问题。

分析过程

显示问题最先使用
dumpsys SurfaceFlinger命令看看图层的显示情况,刚好对比正常的短信和图库的sf部分有啥差别
短信部分的sf情况:
在这里插入图片描述
图库部分的sf期情况:
在这里插入图片描述
差异初步结论:
图库的Activity因为有一个SurfaceView,这里的SurfaceView会导致有单独的Layer,真正显示红框部分属于非SurfaceView部分,但是SurfaceView部分的就完全没有显示出来。

在这里插入图片描述
那么具体这个SurfaceView部分为啥就可以让Activity不显示呢?而且看得出来这里的SurfaceView图层明显在Activity图层下面,不存在遮盖Activity的图层情况,而且本身SurfaceView也只是Activity的一个View,怎么就直接把原本Activity切割了一样。

这里个疑问就需要继续看sf的dump调查:
1、这里看看Activity图层的本身大小
在这里插入图片描述
可以看到这里的大小是正常的,是包括SurfaceView的部分。
2、再看看SurfaceView的图层情况
在这里插入图片描述也可以看出来这里SurfaceView的Layer明显大小比Activity小,而且位移也是不一样的。

所以从Layer的情况来看可以得出如下结论:
Activity本身的Layer的buffer大小其实属于正常的完整大小,并没有被切割掉SurfaceView的部分。

那么上面的HWC的输出中为啥Layer又确实被切割了呢?
这里可以看看hwc相关的dump寻找一些线索:
通过Output Layer看看显示区域
在这里插入图片描述可以看出,最开始显示区域底部大小到了1268,但是visibleNonTransparentRegion计算得出却是:242,即这里本质就是因为这个TransparentRegion参数影响的,那么这个参数最开始来自哪里呢?
从前面Layer的data详情其实也可以看到这个transparentRegionHint参数
在这里插入图片描述
那么又是怎么设置来的呢?就是app层面根据自己是否有SurfaceView情况(更加详细的调用和规则自己可以打堆栈哈),然后调用setTransparentRegionHint方法进行设置。
在这里插入图片描述那么本质原因其实就已经知道了,那么具体如何修改呢?

修改方案:

上面已经分析清楚了本质是因为有了SurfaceView以后,系统会设置对应的TransparentRegionHint导致最后的Activity的Layer只显示在非SurfaceView部分,SurfaceView部分区域直接不会被绘制。那么具体这个问题如何修改呢?
1、考虑专门为这个划线框单独建立一个Layer,且这个Layer的图层在Activity的Layer图层上面,Layer也不会接受任何的TransparentRegionHint设置
在这里插入图片描述

2、最简单方案,直接判断是否为Freeform模式,如果这种模式一概不进行的相关的TransparentRegionHint设置操作,全部设置为0,具体修改截图如下:

在这里插入图片描述
运行效果:
在这里插入图片描述

更多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.coloradmin.cn/o/2096290.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言基础(三十)

1、希尔排序&#xff1a; #include "date.h" #include <stdio.h> #include <stdlib.h> #include <time.h> // 希尔排序函数 void shellSort(int arr[], int n) { for (int gap n / 2; gap > 0; gap / 2) { // 对每个子列表进行插入排…

90分钟实现一门编程语言——极简解释器教程

关键字 解释器, C#, Scheme, 函数式编程 关于 本文介绍了如何使用C#实现一个简化但全功能的Scheme方言——iScheme及其解释器&#xff0c;通过从零开始逐步构建&#xff0c;展示了编程语言/解释器的工作原理。 作者 Lucida a.k.a Luc 如果你是通过移动设备阅读本教程&…

面向对象软件编程——OOP入门实践

工作一段时间了&#xff0c;工作内容趋向于算法模型的复现&#xff0c;就是复现论文算法然后结合业务逻辑开发软件。但是在设计和开发软件时&#xff0c;发现对于OOP理念和软件的设计原则等在实战中还是非常缺乏。于是开始补习&#xff0c;基础软件开发技术。 书籍&#xff1a;…

Arduino UNO 编程 第一期——下载及使用

字幕君已上线...... 副字幕君已上线...... 计数君已上线...... 彩色字幕君 ( 花了重金请来的 ) 已上线...... Doge智能系统已上线...... Doge:嗨嗨我又来了&#xff01; 观众们......已上线&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; OK LETS GO&am…

理解大模型中的Cursor技术:优化长文本推理的前沿方案

理解大模型中的Cursor技术&#xff1a;优化长文本推理的前沿方案 随着自然语言处理&#xff08;NLP&#xff09;领域的快速发展&#xff0c;大型语言模型&#xff08;如GPT系列&#xff09;已广泛应用于文本生成、对话系统和复杂推理任务。然而&#xff0c;随着文本长度的增加…

灾难性遗忘问题(Catastrophic Forgetting,CF)是什么?

灾难性遗忘问题&#xff08;Catastrophic Forgetting&#xff0c;CF&#xff09;是什么&#xff1f; 在深度学习和人工智能领域中&#xff0c;“灾难性遗忘”&#xff08;Catastrophic Forgetting&#xff09;是指当神经网络在增量学习&#xff08;Incremental Learning&#…

用AI生成旅游打卡照!FLUX假装去旅行lora的使用【附工作流】

hello&#xff01;今天我们来聊聊一个特别有意思的话题&#xff1a;如何用AI生成那些看起来像是去过世界各地的旅游打卡照&#xff0c;还能在朋友圈里炫耀一番。很多人看到这些照片都会问&#xff1a;“你真的去过这些地方吗&#xff1f;” 而且最主要的是这种图片做点自媒体旅…

数据仓库系列13:增量更新和全量更新有什么区别,如何选择?

你是否曾经在深夜加班时&#xff0c;面对着庞大的数据仓库&#xff0c;思考过这样一个问题&#xff1a;“我应该选择增量更新还是全量更新&#xff1f;” 这个看似简单的选择&#xff0c;却可能影响整个数据处理的效率和准确性。今天&#xff0c;让我们深入探讨这个数据仓库领域…

RT-DETR+Sort 实现目标跟踪

在前一篇博客中&#xff0c;博主介绍了利用YOLOv8与Sort算法实现目标跟踪&#xff0c;在今天这篇博客中&#xff0c;博主将利用RT-DETR算法与Sort算法相结合&#xff0c;从而实现目标跟踪。。 这里博主依旧是采用ONNX格式的模型文件来执行推理过程&#xff0c;由于Sort算法是基…

vue part6

Vue脚手&#xff08;CLI&#xff09; 第一步&#xff08;仅第一次执行&#xff09;&#xff1a;全局安装vue/cli。 npm install -g vue/cli- 第二步&#xff1a;切换到你要创建项目的目录&#xff0c;然后使用命令创建项目vue create xxxx&#xff08;项目名字&#xff09; 第…

el-table利用折叠面板 type=“expand“ 嵌套el-table,并实现 明细数据多选,选中明细数据后返回原数据得嵌套格式

效果图: 废话不多说直接上代码&#xff0c;完整代码展示&#xff1a; <template><el-tableborderref"multipleTable":data"tableData"tooltip-effect"dark"style"width: 100%"><el-table-columnwidth"50"la…

线程池在接受到30个比较耗时的任务时的状态,在前面30个比较耗时的任务还没执行完成的情况下,再来多少个任务会触发拒绝策略?

目录 一、提出问题 二、解答 问题 1: 线程池在接受到30个比较耗时的任务时的状态 问题 2: 在前面30个比较耗时的任务还没执行完成的情况下&#xff0c;再来多少个任务会触发拒绝策略&#xff1f; 总结 一、提出问题 我们首先自定义一个线程池&#xff1a; new ThreadPoo…

18042 计算分段函数值

### 伪代码 1. 读取输入的实数x。 2. 根据x的值计算y&#xff1a; - 如果x < 1&#xff0c;y x。 - 如果1 < x < 10&#xff0c;y 2x - 1。 - 如果x > 10&#xff0c;y 3x - 11。 3. 输出y的值&#xff0c;保留两位小数。 ### C代码 #include <io…

fl studio 21/24破解版(水果音乐制作软件24) v24.1.1.4285附安装教程

fl studio 21/24破解版&#xff0c;又被国内网友称之为水果音乐制作软件24&#xff0c;是Image-Line公司成立26周年而发布的一个版本&#xff0c;是目前互联网上最优秀的完整的软件音乐制作环境或数字音频工作站&#xff0c;包含了编排&#xff0c;录制&#xff0c;编辑&#x…

World of Warcraft [CLASSIC][80][Grandel] Call to Arms: Warsong Gulch

Call to Arms: Warsong Gulch - Quest - 魔兽世界怀旧服CTM4.34《大地的裂变》数据库_大灾变85级魔兽数据库_ctm数据库 10人PVP战歌峡谷&#xff0c;该战场经常用来互刷军衔和荣誉&#xff0c;哈哈 wow plugin_魔兽世界挂机插件-CSDN博客

完美解决node-sass@4.14.1 postinstall: `node scripts/build.js` 问题

node v14.16.0 安装node-sass4.14.1会出现报错 看日志排查发现设置的源国内的都有问题 直接梯子下载&#xff1a; https://github.com/sass/node-sass/releases/download/v4.14.1/win32-x64-83_binding.node 本地启动phpstudy&#xff0c;当然你也可以放在你服务器上&#xff0…

学习笔记 ---- 数论分块(整除分块)

文章目录 算法概述引理引理 1 1 1引理 2 2 2 数论分块结论&#xff08;区间右端点公式&#xff09;过程 N N N 维数论分块向上取整的数论分块 例题 H ( n ) H(n) H(n)[CQOI2007] 余数求和[清华集训2012] 模积和 算法 概述 数论分块可以快速计算一些含有除法向下取整的和式(即…

掌握 SQL 数据操纵的基础技巧

在数据库管理中&#xff0c;SQL 数据操纵语言 (DML) 是至关重要的工具。它主要包括 INSERT、UPDATE 和 DELETE 语句&#xff0c;用于对数据库中的数据进行插入、更新和删除操作。本文将带你快速了解这些基本操作。 插入数据 在创建了一个表之后&#xff0c;最常见的操作就是插…

基于SpringBoot+Vue+MySQL的的宠物商城网站

系统背景 基于SpringBootVueMySQL的宠物商城网站是一个结合了现代Web开发技术的综合性电商平台&#xff0c;专为宠物爱好者及宠物商家设计。该系统背景可以从多个方面来阐述&#xff0c;包括但不限于市场需求、技术选型、用户体验以及平台价值等方面。 1. 市场需求 随着人们生…

python内置模块time详解(我们需要了解的多种时间格式)

Python的time模块提供了各种与时间相关的函数。我们可以获取当前时间、操作时间日期、计算两个时间差等。 时间有两种标准表示法: 数字表示: 整数或浮点数&#xff0c;通常是自从1970年1月1日以来的秒数。9个整数组成的元组&#xff1a;元组项包含年份&#xff0c;月份&#…