IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android dumpsys SurfaceFlinger分析 -> 正文阅读

[移动开发]Android dumpsys SurfaceFlinger分析

对于分析一些显示问题,我们需要使用adb shell dumpsys SurfaceFlinger命令来获取SurfaceFlinger的dump信息,因此这里来详细讲解下SurfaceFlinger的dump信息。

Display identification data:? ? ? //display信息?
Display 19260441557360770 (HWC display 0): port=130 pnpId=QCM displayName="" ?//19260441557360770是HWC dislay id

Visible layers (count = 70)? ?//count的值来源于layersSortedByZ中layer的数量.

*- Output Layer 0xb4000073181a9a30(SurfaceView - com.qiyi.video/org.iqiyi.video.activity.PlayerActivity#0)? ?//括号里是当前layer的名称
Region visibleRegion (this=0xb4000073181a9a48, count=1) ?//visibleRegion,表示可见区域的大小.每个region可能包含多个区域,所以这里count也可能不等于1.
? ? [ ?0, ?38, 2340, 1041]
? ? ? ? Region visibleNonTransparentRegion (this=0xb4000073181a9ab0, count=1)
? ? [ ?0, ?38, 2340, 1041]
? ? ? ? Region coveredRegion (this=0xb4000073181a9b18, count=1)
? ? [ ?0, ?38, 2340, 1041]
? ? ? ? Region output visibleRegion (this=0xb4000073181a9b80, count=1)
? ? [ 39, ? 0, 1042, 2340]
? ? ? ? Region shadowRegion (this=0xb4000073181a9be8, count=1)
? ? [ ?0, ? 0, ? 0, ? 0]
? ? ? forceClientComposition=false clearClientTarget=true displayFrame=[39 0 1042 2340] sourceCrop=[0.000000 0.000000 1002.000000 2340.000000] bufferTransform=0 (0) dataspace=UNKNOWN (0) z-index=0?
? ? ? hwc: layer=0x0824 composition=DEVICE (2)? ??//表明这个layer是device合成

layerStack= ? 0, z= ? ? ? ?3, pos=(0,0), size=( ? 0, ? 0), crop=[ ?0, ? 0, ?-1, ?-1], cornerRadius=0.000000, isProtected=0, isOpaque=0, invalidate=1, dataspace=Default, defaultPixelFormat=Unknown/None, backgroundBlurRadius=0, color=(0.000,0.000,0.000,1.000), flags=0x00000000, tr=[0.00, 0.00][0.00, 0.00]
parent=DefaultTaskDisplayArea#0
zOrderRelativeOf=none
activeBuffer=[ ? 0x ? 0: ? 0,Unknown/None], tr=[0.00, 0.00][0.00, 0.00] queued-frames=0, mRefreshPending=0, metadata={5:4bytes}, cornerRadiusCrop=[0.00, 0.00, 0.00, 0.00], shadowRadius=0.000,?
?? ? ?
//layerStack: 表示这个layer是保存在哪个layerstack中(不同的display是有不同的layerstack的,这点可以通过一个连接HDMI时的layerstack很容易确认).
//z: 表示Z轴坐标,z值越大,layer越靠上.
//pos: pos的值是layer左上角的位置.
//size: 是layer的大小.
//crop: crop代表裁剪区域.
//isOpaque: 代表是否是不透明的,只有完全不透明的layer这个值才是1.
//invalidate: 表示这个layer的数据是失效的,这个值绝大多数情况下都是0.
//alpha: 表示了这张layer的透明度,这个值跟isOpaque是有区别的.isOpaque表示了这个layer可以是透明的,也就是没有显示数据的地方;而alpha表示透明度,也即是有数据的地方也可以因为透明度而受到影响产生透明的效果.
//tr: 代表屏幕的旋转和缩放程度.大多数的layer实际上是不需要旋转和缩放的,因为他们定义的大小就是跟屏幕一致的.

Display 19260441557360770 HWC layers:? ?//Display 的layers合成信息
-----------------------------------------------------------------------------------------------------------------------------------------------
?Layer name
? ? ? ? ? ?Z | ?Window Type | ?Layer Class | ?Comp Type | ?Transform | ? Disp Frame (LTRB) | ? ? ? ? ?Source Crop (LTRB) | ? ? Frame Rate (Explicit) [Focused]
-----------------------------------------------------------------------------------------------------------------------------------------------
?SurfaceView - com.qiyi.video/org.iqiyi.video.activity.PlayerActivity#0
? rel ? ? -2 | ? ? ? ? ? ?0 | ? ? ? ? ? ?0 | ? ? DEVICE | ? ? ? ? ?0 | ? 39 ? ?0 1042 2340 | ? ?0.0 ? ?0.0 1002.0 2340.0 | ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[*]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
?com.qiyi.video/org.iqiyi.video.activity.PlayerActivity#0
? rel ? ? ?0 | ? ? ? ? ? ?1 | ? ? ? ? ? ?0 | ? ? DEVICE | ? ? ? ? ?0 | ? ?0 ? ?0 1080 2340 | ? ?0.0 ? ?0.0 1080.0 2340.0 | ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[*]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
?ScreenDecorOverlay#0
? rel ? ? ?0 | ? ? ? ? 2024 | ? ? ? ? ? ?0 | ? ? DEVICE | ? ? ? ? ?0 | ? ?0 ? ?0 1080 ? 60 | ? ?0.0 ? ?0.0 1080.0 ? 60.0 | ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[ ]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
?ScreenDecorOverlayBottom#0
? rel ? ? ?0 | ? ? ? ? 2024 | ? ? ? ? ? ?0 | ? ? DEVICE | ? ? ? ? ?0 | ? ?0 2280 1080 2340 | ? ?0.0 ? ?0.0 1080.0 ? 60.0 | ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[ ]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

这里注意:SurfaceView的Layer Z轴位置是小于用来其宿主Activity窗口的Layer的Z轴位置的,但是前者会在后者的上面挖一个“洞”出来,以便它的UI可以对用户可见。实际上,SurfaceView在其宿主Activity窗口上所挖的“洞”只不过是在其宿主Activity窗口上设置了一块透明区域。
?

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-12-24 18:35:55  更:2021-12-24 18:37:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:05:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码