如何高效调试复杂布局?Layout Inspector 的 Toggle Deep Inspect 完全解析

Layout Inspector 是 Android Studio 提供的一个强大工具,用于分析和调试 Android 应用的 UI 布局。前置条件是app是debug调试状态,它允许你在应用运行时实时查看布局层次结构、UI 元素的属性,并帮助你诊断 UI 渲染问题。

Toggle Deep InspectLayout Inspector 中的一个功能,非常实用,可以定位界面布局异常问题,比如有界面图层局部闪屏,出现黑屏,白屏等显示问题,点击"Toggle Deep Inspect"按钮后可以固定布局,此时点击布局中的异常view位置,可快速定位布局异常问题,
在这里插入图片描述

使用 Layout Inspector 的步骤:

一、 启动应用并运行在设备或模拟器上:

  • 首先,确保你的应用已经运行在设备或者模拟器上。你需要通过 Android Studio 构建并运行应用。

二、 打开 Layout Inspector

  • 在 Android Studio 中,点击右上角的 “View” 菜单。
  • 选择 “Tool Windows”“Layout Inspector”,或者通过快捷键 Alt + Shift + I(Windows/Linux) 或 Cmd + Shift + I(Mac)打开。

三、 选择目标设备:

  • Layout Inspector 窗口中,选择一个已连接的设备或模拟器。如果应用已经运行,你应该能在设备列表中看到它。

四、 刷新布局信息:

  • Layout Inspector 窗口中,点击 “Refresh” 按钮(通常在界面顶部),以获取当前应用的最新布局视图。

五、查看布局结构:

  • 你可以查看整个应用的 UI 层级结构,类似于文件夹树形结构。每个节点代表一个视图元素,例如 TextViewButton 等。点击每个元素可以查看它的详细属性。

六、检查 UI 元素的属性:

  • 在右侧面板中,你可以看到当前选中视图的属性,包括位置、尺寸、颜色、边距、填充等。可以帮助你了解视图的布局行为。

七、 进行布局调试:

  • 实时查看元素的大小与位置:通过 Layout Inspector,你可以直接看到视图的尺寸、位置、边距等布局参数,帮助你判断布局是否如预期。
  • 查看布局层次:可以看到各个组件如何嵌套,帮助你识别布局问题,特别是一些复杂的布局结构。
  • 调试布局渲染问题:如果你遇到布局未正确显示的问题,Layout Inspector 会非常有用。它帮助你检查是否有元素被错误地嵌套或是显示错误。

八、使用 Layout Inspector 的额外功能:

  • 查看视图的层叠效果:你可以检查每个视图的 Z-index(即显示层级),确认视图是否被遮挡。
  • 界面截图:可以截取界面视图,方便分析或反馈问题。
  • 查看 UI 性能:在高端设备上,你还可以看到布局的性能指标,包括视图的渲染时间和内存占用等。

九、 手动布局调整

  • Layout Inspector 并不支持直接在工具中修改布局,但是它能够帮助你识别问题。通过对布局的分析,用户可以回到 XML 或 Kotlin/Java 代码中做相应的修改。

传统dump布局adb命令

adb shell dumpsys activity | findStr mFocus

adb shell dumpsys activity|findstr ResumedActivit

adb shell dumpsys window windows > w.txt

adb shell dumpsys activity | findstr mTop

使用 Layout Inspector 的常见场景:

  1. UI 层级分析
    通过查看视图的层次结构,可以帮助你了解布局是如何渲染的。比如,你可以发现某个视图被错误地嵌套,导致显示问题。

  2. 调试视图问题
    有时应用中的某些视图元素没有显示或者错位,Layout Inspector 可以显示视图的实际位置和尺寸,帮助你快速找出原因。

  3. 检测 UI 性能问题
    对于复杂的界面布局,Layout Inspector 还可以帮助你查看渲染性能,识别可能的性能瓶颈。

  4. 布局的屏幕适配
    可以查看不同屏幕尺寸或分辨率下的布局表现,确保界面在各类设备上都能正确显示。


Layout Inspector 窗口介绍:

  • Hierarchy:显示视图层次结构,可以展开和收起视图层次,查看父子视图之间的关系。
  • Attributes:显示选中视图的属性,如 widthheightpaddingmargingravity 等,可以帮助你检查视图布局的详细配置。
  • Render:显示当前选中视图的渲染图像,可以查看视图的实际显示效果,特别适合检查布局渲染问题。
  • Z-index:显示视图的堆叠顺序,帮助你诊断是否有视图被遮挡。

Toggle Deep Inspect 用法

Toggle Deep InspectLayout Inspector 中的一个功能,非常实用,可以定位界面布局异常问题,比如有界面图层局部闪屏,出现黑屏,白屏等显示问题,点击"Toggle Deep Inspect"按钮后可以固定布局,此时点击布局中的异常view位置,可快速定位布局异常问题,
用于获取更深入的视图属性信息,特别是对于那些嵌套在其他视图内的组件。

什么是 Deep Inspect?

通常,Layout Inspector 会显示视图的基本属性和信息,但对于某些复杂视图或嵌套的视图,可能需要更深入的分析。启用 Deep Inspect 后,可以获取更详细的视图信息,包括某些复杂的布局参数和子视图的详细状态。

如何使用 Toggle Deep Inspect
  1. 打开 Layout Inspector:确保你已经通过上述步骤打开了 Layout Inspector

  2. 点击目标视图:在设备或模拟器上点击你想要检查的视图,Layout Inspector 会高亮显示该视图。

  3. 启用 Deep Inspect

    • Layout Inspector 窗口的右上角,找到并点击 Toggle Deep Inspect 按钮(通常是一个类似放大镜的图标)。
    • 启用后,Layout Inspector 将会展示更多层次的布局信息,尤其是对于嵌套或复杂的视图,显示其子视图的详细信息和嵌套关系。
      在这里插入图片描述
  4. 查看视图详细信息

    • 当启用了 Deep Inspect 后,除了显示视图的基本信息(如尺寸、边距等),你还可以看到更多关于该视图的内部结构的信息,比如:
      • 是否有子视图
      • 子视图的属性
      • 是否存在布局约束等。
  5. 禁用 Deep Inspect

    • 当你不再需要深入查看视图时,可以再次点击 Toggle Deep Inspect 按钮来关闭该功能。此时,Layout Inspector 会恢复到显示常规的视图信息。
Deep Inspect 的应用场景
  • 嵌套视图检查:当你有嵌套布局时(例如 LinearLayout 中嵌套 RelativeLayout,或 ConstraintLayout 中有多个子视图),使用 Deep Inspect 可以帮助你看到嵌套的子视图及其属性,了解视图层级。
  • 复杂布局调试:对于一些复杂的 UI 布局,特别是当某个视图无法正确显示时,启用 Deep Inspect 可以帮助你查看视图是否被其他视图遮挡,或者布局参数是否设置正确。
  • 多层次视图层级:一些应用的布局可能有多层嵌套的视图,启用 Deep Inspect 后,你可以查看每一层视图的属性和子视图的状态,更有利于排查布局问题。

总结:

  • Layout Inspector:可以帮助你查看并调试应用的 UI 布局,显示组件树、视图属性和渲染效果。
  • Toggle Deep Inspect:启用后,能显示更深入的视图属性信息,特别是对于复杂和嵌套的视图,帮助你查看视图的详细结构和子视图状态。

通过 Toggle Deep Inspect,你能够更细致地了解 UI 组件的内部状态,方便你调试和优化布局,尤其是在处理复杂视图时,它能够为你提供更多有价值的信息。

Layout Inspector 是一个非常实用的调试工具,特别适合用于开发过程中进行 UI 相关的分析与调试。它不仅能够帮助你快速识别布局问题,还能让你了解视图的层次结构、属性和性能问题,使你能够更高效地开发和优化 Android 应用的用户界面。

Toggle Deep Inspect 是其中的一个重要功能,非常实用,可以定位界面布局异常问题,遇到有界面图层局部闪屏,出现黑屏,白屏等显示问题,点击"Toggle Deep Inspect"按钮后可以锁定布局(view不可),此时点击布局中的异常view位置,可快速定位布局异常问题,
用于获取更深入的视图属性信息,特别是对于那些嵌套在其他视图内的组件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/940504.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

wxpython 基础代码

wxpython 基础代码 import wxclass MyFrame(wx.Frame):def __init__(self):super().__init__(parentNone, title计算器, size(450, 250))panel wx.Panel(self)# panel.SetBackgroundColour(wx.GREEN)self.icon1 wx.Icon(name"test.ico", typewx.BITMAP_TYPE_PNG)se…

2.5 io_uring

io_uring的相关函数接口介绍 io_uring 是 Linux 内核中一种高效的异步 I/O 接口,最早引入于 **Linux 内核 5.1** 版本。它是由 Jens Axboe 开发的,目的是提供更高效的异步 I/O 操作,尤其是相比 epoll 和 aio,io_uring 减少了系统…

服务器数据恢复—V7000存储中多块磁盘出现故障导致业务中断的数据恢复案例

服务器存储数据恢复环境: 一台V7000存储上共12块SAS机械硬盘(其中1块是热备盘),组建了2组Mdisk,创建了一个pool。挂载在小型机上作为逻辑盘使用,小型机上安装的AIXSybase。 服务器存储故障: V7…

python 读取win7 win10本机ipv6 地址转发到电邮(备份)

python 版本: 3.8.10 用于外网查询SMB服务器ipv6 地址。服务器定时查询本机ipv6地址,如地址变动则用电邮发送新地址。 import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart import ssl import socket…

多个JAVA环境变量安装配置

在做java代码审计时,为了要成功运行目标环境,时长要对于jdk版进行切换,且在装多个jdk时还时长会遇到安装配置后环境变量不生效的情况,下文介绍; 1、为什么安装了新的jdk,有的时候环境变量中的jdk版本确还是…

数字经济下的 AR 眼镜

目录 1. 📂 AR 眼镜发展历史 1.1 AR 眼镜相关概念 1.2 市面主流 XR 眼镜 1.3 AR 眼镜大事记 1.4 国内外 XR 眼镜 1.5 国内 AR 眼镜四小龙 2. 🔱 关键技术 2.1 AR 眼镜近眼显示原理 2.2 AR 眼镜关键技术 2.3 AR 眼镜技术难点 3. &#x1f4a…

maven-resources-production:ratel-fast: java.lang.IndexOutOfBoundsException

Maven生产环境中遇到java.lang.IndexOutOfBoundsException的问题,尝试了重启电脑、重启IDEA等常规方法无效,最终通过直接重建工程解决了问题。 Rebuild Project 再启动OK

TDesign:NavBar 导航栏

NavBar 导航栏 左图,右标 appBar: TDNavBar(padding: EdgeInsets.only(left: 0,right: 30.w), // 重写左右内边距centerTitle:false, // 不显示标题height: 45, // 高度titleWidget: TDImage( // 左图assetUrl: assets/img/logo.png,width: 147.w,height: 41.w,),ba…

【计算机网络】lab2 Ethernet(链路层Ethernet frame结构细节)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀计算机网络_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2.…

ansible剧本快速上手

playbook剧本介绍 是什么:能户长期保存,且能实现批量配置、部署…的文件格式:yaml格式。用 空格 冒号 头号 句号语法检测:ansible-playbook --syntax-check install-zabbix.yaml或则 -C检测取消默认任务:gather_facts…

【LeetCode每日一题】——434.字符串中的单词数

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【时空频度】八【代码实现】九【提交结果】 一【题目类别】 字符串 二【题目难度】 简单 三【题目编号】 434.字符串中的单词数 四【题目描述】 统计字符串中的单词个…

C++ OpenGL学习笔记(1、Hello World空窗口程序)

终于抽出时间系统学习OpenGL 教程,同时也一步一步记录怎样利用openGL进行加速计算。 目录 1、环境准备1.1、库的下载1.2、库的选择及安装 2、OpenGL第一个项目,Hello World!2.1、新建hello world控制台项目2.2、配置openGL环境2.2.1 包含目录配置2.2.2 …

MySQL复制问题和解决

目录 环境介绍 一,主库执行delete,从库没有该数据 模拟故障 修复故障 二,主库执行insert,从库已存在该数据 模拟故障 故障恢复 三,主库执行update,从库没有该数据 模拟故障 故障恢复 四&#xf…

AWTK 在树莓派 pico 上的移植笔记

1. 配置文件 (awtk_config.h) pico 和 stm32f103 的配置差不多,虽然 pico 的内存要大不少,但是也不足提供一个完整的 FrameBuffer,所以只能使用片段 LCD。 我们在 awtk-stm32f103 的配置 基础稍作修改即可。 /* 使用片段 LCD */#define FRA…

构建MacOS应用小白教程(打包 签名 公证 上架)

打包 在package.json中,dependencies会被打进 Electron 应用的包里,而devDependencies则不会,所以必要的依赖需要放到dependencies中。files中定义自己需要被打进 Electron 包里的文件。以下是一个完整的 mac electron-builder的配置文件。 …

flink sink doris

接上文&#xff1a;一文说清flink从编码到部署上线 网上关于flink sink drois的例子较多&#xff0c;大部分不太全面&#xff0c;故本文详细说明&#xff0c;且提供完整代码。 1.添加依赖 <!--doris cdc--><!-- 参考&#xff1a;"https://doris.apache.org/zh-C…

GhostRace: Exploiting and Mitigating Speculative Race Conditions-记录

文章目录 论文背景Spectre-PHT&#xff08;Transient Execution &#xff09;Concurrency BugsSRC/SCUAF和实验条件 流程Creating an Unbounded UAF WindowCrafting Speculative Race ConditionsExploiting Speculative Race Conditions poc修复flush and reload 论文 https:/…

【STM32 Modbus编程】-作为主设备写入多个线圈和寄存器

作为主设备写入多个线圈和寄存器 文章目录 作为主设备写入多个线圈和寄存器1、硬件准备与连接1.1 RS485模块介绍1.2 硬件配置与接线1.3 软件准备2、写入多个线圈2.1 数据格式2.2 发送数据2.3 结果3、写入多个寄存器3.1 数据格式3.2 发送数据3.3 结果本文将实现STM32作为ModBus主…

国标GB28181协议平台Liveweb:搭建建筑工地无线视频联网监控系统方案

随着科技高速发展&#xff0c;视频信号经过数字压缩&#xff0c;通过互联网宽带或者移动4G网络传递&#xff0c;可实现远程视频监控功能。将这一功能运用于施工现场安全管理&#xff0c;势必会大大提高管理效率&#xff0c;提升监管层次。而这些&#xff0c;通过Liveweb监控系统…

AS-REP Roasting离线爆破攻击

针对一个域内用户&#xff0c;其账户选项有个设置叫作 “不要求 kerberos 预身份验证”&#xff0c;它默认是关闭的。 当 “不要求 kerberos 预身份验证” 选项被勾选&#xff0c;会出现以下效果&#xff1a; as-req 报文中不需要添加用户 hash 加密的时间戳&#xff0c;自动返…