Android 计算View的深度

2023-11-01

这次遇到一个需求,需要计算当前View的深度,基本上就是大学时候数据结构里求二叉树的解法,记录一下,理论上也可以用于性能优化和性能监控

 private int maxDeep(View view) {
        //view不会有子view所以就返回0
        if (!(view instanceof ViewGroup)) {
            return 0;
        }
        ViewGroup viewGroup = (ViewGroup) view;
        //是viewgroup如果并没有子view,那么也是最底层的view
        if (viewGroup.getChildCount() == 0) {
            return 0;
        }
        //记录最大层数
        int max = 0;
        //广度遍历view
        for (int i = 0; i < viewGroup.getChildCount(); i++) {
            //如果viewGroup拥有子view,所以层数+1,然后递归算它的子view的层数
            int deep = maxDeep(viewGroup.getChildAt(i)) + 1;
            //取最大值
            max = Math.max(deep,max);
        }
        return max;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 计算View的深度 的相关文章

  • Spring Data JPA 规范继承

    我有三个实体 如下所示 Entity Inheritance strategy InheritanceType JOINED DiscriminatorColumn name type public abstract class Emplo
  • 从设备获取日期并将其转换为 GMT+4

    我正在尝试查找 Android 手机的时区 因为我想获取日期对象 但我想要 GMT 4 格式 我看到的所有其他答案都会转换来自 API 请求的时间 其时区已知 我怎样才能做到这一点 其他方法可能是将服务器传来的 GMT 4 时间转换为我设备
  • 自动装箱是否调用 valueOf()?

    我试图确定以下陈述是否保证为真 Boolean true Boolean TRUE Boolean true Boolean valueOf true Integer 1 Integer valueOf 1 我一直认为自动装箱相当于调用va
  • Apache HTTPClient SSLPeerUnverifiedException

    使用 Apache HttpClient 4 2 1 使用从基于表单的登录示例复制的代码 http hc apache org httpcomponents client ga examples html http hc apache or
  • java应用程序,线程在终止MySQL连接后挂起

    我有一些工作线程正在运行 其中包括 MySQL 和 mysql connector java 5 1 20 当我杀死一些 SQL 语句 使用 mysql 客户端的kill 连接id 时 java线程挂起 这应该抛出一些异常 jstack 打
  • android项目中视频文件放在哪里

    我有一个视频 我需要知道放置在哪里以及如何获取该视频的路径 我知道如何从 URL 添加视频 Uri uri Uri parse www abc com myVid mp4 videoView VideoView findViewById R
  • Selenium 和 xpath:查找带有类/id 的 div 并验证其中的文本

    我正在努力拥有xpath find a div并验证div有一个特定的string里面的文字 这是HTML div class Caption Model saved div and div class gwt HTML sfnStanda
  • 为什么 (Oracle) JVM 对内存使用有固定上限 (-Xmx)?

    本着提问的精神Java 为什么存在 MaxPermSize https stackoverflow com questions 3356005 java why does maxpermsize exist 我想问一下为什么Oracle J
  • Java Reflection:为什么这么慢?

    我一直避免使用 Java 反射 因为它速度缓慢 我在当前项目的设计中达到了一个点 能够使用它将使我的代码更具可读性和优雅性 所以我决定尝试一下 我只是对这种差异感到惊讶 我注意到有时运行时间几乎延长了 100 倍 即使在这个简单的例子中 它
  • 让 DrawerLayout 在 ActionBar 上滑动

    我在活动中有一个滑动抽屉菜单 其中有一个带有一些选项卡的操作栏 我想让滑动抽屉滑过标签 而不是滑过标签下方 这就是现在的样子 关于如何做到这一点有什么想法吗 注意 我知道我可能会在这里打破一些约定和 UI 模式 如果它根本不起作用 我会考虑
  • Java - 动态创建子类

    我想以编程方式创建一个子类 我想我的选择很少 Javassist CGLib BCEL 或 ASM 用例是一个应用程序的内部是面向类的 而扩展是基于类的 因此 我不能将单个类作为由外部化脚本驱动的多个扩展的基础 现在 我该怎么做呢 我找到了
  • 是否可以通过 MediaRecorder 或其他类获取当前样本幅度

    我有一个媒体录音机 想要从麦克风录制媒体并获取 它是幅度样本 我想尝试立即获得正确的当前幅度 当调用一些API时 但 MediaRecorde 中只有一个 API 用于获取幅度 getMaxAmplitude 用于获取最大绝对幅度 自上次调
  • ACRA formkey 哪里可以得到?

    所以我尝试按照以下说明进行操作https github com ACRA acra wiki BasicSetup https github com ACRA acra wiki BasicSetup但它太旧了或者什么的 使用我自己的 gm
  • 将文本文件写入 SD 卡失败

    我遇到了一个奇怪的问题 我的应用程序可以将一个简单的文本文件写入 SD 卡 有时它对某些人有效 但对其他人无效 我不知道为什么 对于某些人来说 如果他们输入一些字符 例如 在文件等中 我似乎无法重现它 因为我没有遇到任何麻烦 但这是处理文件
  • 设置android中按钮的透明度

    我想在android中制作具有不同透明度级别的按钮 我使用过 android color transparent 但它使按钮 100 透明 我需要一个 70 透明的按钮 这是我正在处理的 XML 代码
  • 错误:未找到 Flutter SDK。在 local.properties 文件中使用 flutter.sdk 定义位置

    ERROR Flutter SDK not found Define location with flutter sdk in the local properties file 我已经导入了 Flutter 示例应用程序mahtab al
  • Android:Html 锚链接仅在 Web 视图中有效一次

    在使用锚链接加载 html 内容时 我在 webview 中遇到一些奇怪的问题 以下代码非常适合锚标记 但是只有一次 第二次当我按下锚标签时不工作 protected void onCreate Bundle savedInstanceSt
  • 在 Ubuntu 上的 Tomcat 中加载共享本机库

    如何在 Ubuntu 上的 Tomcat6 中加载共享库 我创建了一个名为 libawragrids so 的库 awragrids 并将其放置在 var lib tomcat6 shared 我在调用启动 tomcat 的终端中设置了以下
  • GridLayout 中的 JLabel

    如何添加JLabel出于GridLayout 我有一个 8x8 网格布局 Container content getContentPane content setLayout new GridLayout 8 8 2 2 for int f
  • 从 Java 程序中获取局部变量的名称和类型

    这是我正在尝试的代码 JavaCompiler compilerA ToolProvider getSystemJavaCompiler int resultA compilerA run null null null Users a Do

随机推荐

  • 转:浅谈HTTP中Get、Post、Put与Delete的区别

    1 GET请求会向数据库发索取数据的请求 从而来获取信息 该请求就像数据库的select操作一样 只是用来查询一下数据 不会修改 增加数据 不会影响资源的内容 即该请求不会产生副作用 无论进行多少次操作 结果都是一样的 2 与GET不同的是
  • Conda安装Postgresql数据库

    conda search postgresql 查询数据库可安装版本 conda install postgresql 12 2 安装12 2版本的postgresql 创建一个新的PostgreSQL数据库集簇 initdb创建一个新的P
  • ruoyi数据权限学习

    思路 用户关联了角色 用户可以关联多个角色 给角色设置数据权限分类 数据权限分类有如下5种 全部数据权限 DATA SCOPE ALL 自定数据权限 DATA SCOPE CUSTOM 部门数据权限 DATA SCOPE DEPT 部门及以
  • Keil MDK的CMSIS USART Driver使用

    前言 本文适用于使用过Keil MDK软件且有一定的单片机开发基础的人员 软件版本 Keil MDK v5 24 硬件开发板 STM32F429I Discovery 预备知识 Keil RTX线程使用 Keil MDK v5新增了pack
  • 即时通-openfire设备SSL证书部署指南

    一 什么是OpenfireOpenfire 采用Java开发 开源的实时协作 RTC 服务器基于XMPP Jabber 协议 您可以使用它轻易的构建高效率的即时通信服务器 Openfire安装和使用都非常简单 并利用Web进行管理 单台服务
  • 英文论文如何看?转自知乎

    SoniaYang 因为去年年中刚完成了我的硕士论文 就来谈点个人经验 不知道你指的文献指的是 期刊论文 or 学术原著 如果是 期刊论文 那就得首先看Abstract 摘要 一般Abstract包括了这篇文章最基本最全面的几个要素 就是整
  • SQL 统计表 b 对应表a个数,并赋值给表a的一个字段

    最近遇到这么个问题 表a 歌单表 music list 表b 歌曲详情表 music detail 一个歌单对应多个歌曲详情 但在表的设计时 没有考虑到在 music list 设置一个字段标记对应的 music detail数据条数 在数
  • 悄悄分享 60 个相见恨晚的神器工具

    让 WebP 图片下载为 PNG 格式 从 Github 批量下载表情包 一键滚动截屏整个网页 助你快速成为 B 站老司机 一键分析网站技术栈 翻录网页视频神器等等 这些功能 都能在 Chrome 中使用件简单实现 不信 你往下看就行了 最
  • Spring Boot集成Swagger3.0,Knife4j导出文档

    文章目录 Spring Boot集成Swagger3 0 Knife4j导出文档 效果展示 如何使用 简要说明 添加依赖 添加配置类 测试接口 token配置位置 问题1 多文件上传 方法一 配置全局参数 方法二 开启动态参数 自定义多个文
  • Callable日常使用

    Callable日常使用 前言 之前在项目中有个多线程校验导入数据的额需求 就想到了callable 既有返回值又可以抛出异常 岂不美哉 工作之余总结下callable的使用 方便后期CV 目录 Callable日常使用 一 自定义call
  • 360安全卫士添加信任区

    系列文章目录 文章目录 系列文章目录 前言 一 添加信任区 二 步骤 1 木马查杀 2 信任区 3 添加信任的文件 总结 前言 360安全卫士经常会误报 虽然有想过卸载360 但他的有些小工具还挺实用 哎 鸡肋啊 一 添加信任区 打开360
  • 上一个说软件测试简单的,已经被面试官问emo了···

    现在已经过了 不会但我会学 就能感动面试官的时代 随着供需关系的变化 不论是对于面试官还是面试者 面试的成本越来越高 为了筛选到更优秀的程序员 面试官们可谓是绞尽了脑汁 面试造火箭 工作拧螺丝 的传言也不是空穴来风 那些面试官最喜欢的就是你
  • oracle碎片小结

    author skate time 2010 05 31 我们在使用windows的时候 都知道要定期整理磁盘碎片 因为磁盘碎片会影响性能 给管理上带来额外的负担 那oracle更是如此 当随着数据增加 oracle处理海量数据本身就已经很
  • 2021-11-08

    https learnku com docs the way to go 104 tag structure 3642 https mp weixin qq com s 3sjlDFSthVK3 E54TqqUqw
  • faster-rcnn(pytorch)参数配置修改

    修改模型配置文件 train prototxt文件 input data层的num class数值由21改为类别数目 roi data层的num class数值由21改为类别数目 cls score层的num output数值由21改为类别
  • 通过Python2.7访问Oracle

    环境 Python 2 7 cx Oracle 7 3 0 instantclient basic linux x64 version zip unzip instantclient basic zip unzip d cx Oracle
  • 6.Docker Desktop 安装使用教程

    本文目录 1 前言 2 下载 Docker Desktop 3 安装 Docker Desktop 1 配置 Docker Desktop 环境 2 安装 wsl2 2 下载并安装 3 打开 Docker Desktop 的问题 1 问题一
  • 【高级CSS属性】那些年轰动一时的5个CSS高级属性(附源码)

    文章目录 写在前面 涉及知识点 1 empty选择器 1 1 应用场景及效果 1 2 代码实现 2 gap属性 2 1 应用场景及效果 2 2 代码实现 3 伪类 invalid 应用 3 1 应用场景及效果 3 2 代码实现 4 back
  • Es java分页查询列表数据

    Autowired private RestHighLevelClient client public List
  • Android 计算View的深度

    这次遇到一个需求 需要计算当前View的深度 基本上就是大学时候数据结构里求二叉树的解法 记录一下 理论上也可以用于性能优化和性能监控 private int maxDeep View view view不会有子view所以就返回0 if