View绘制流程源码分析-第二篇

Android应用层View绘制流程与源码分析,墙都不扶就服你 通过上面分析可以看出measure过程主要就是从顶层父View向子View递归调用view.measure方法(measure中又回调onMeasure方法)的过程。 阅读详情

关于:getLayoutInflater().inflate,这是自己看源码的笔记,作为记录篇,最近会将其整理出来

activity.getlayoutinflater

getWindow(PhoneWindow).getlayoutinflater

初始化:
PhoneWindow
public PhoneWindow(Context context) {
super(context);
mLayoutInflater = LayoutInflater.from(context);
}

LayoutInflater
LayoutInflater LayoutInflater =
(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

解析 layoutinflater.inflate
四个重载方法

重点在于:
LayoutInflater.inflate(XmlPullParser parser, @Nullable ViewGroup root, boolean attachToRoot)

这个函数里面的逻辑:

前传:将root节点先赋值给result
1.寻找根节点,如果既不是 开始标签 也不是 结束标签 一直循环,解析器指向下一个标签一直到跳出循环为止

2.跳出循环之后,对type进行检查,正常的流程肯定是先遇到 开始标签,如果不是,抛出布局异常,提示没有找到 start tag

3.获取到当前解析器指向的标签名称name

4.如果是可调式模式,打印出当前的根节点

5.如果name是merge的话,也就是start tag是,说明一定需要绑定到一个爸爸上面
【1】如果此时爸爸是空的,或者需要绑定的标识符是false,那么就会出现异常
" can be used only with a valid "
+ “ViewGroup root and attachToRoot=true”
【2】如果爸爸和标识符都是正常的,那么继续使用递归的方式,遍历它的所有孩子

void rInflate(XmlPullParser parser, View parent, Context context, AttributeSet attrs, boolean finishInflate)
1.获取解析器当前元素的深度
Outside startTag 0
startTag 1
2
2
endTag 1
OutSide endTag 0
2.如果当前的节点不是endtag或者深度大于第一次获取的depth, 同时当前的type不是END_DOCUMENT(针对XML文档),进入循环
如果不是starttag,进入下一轮循环
获取当前解析器的元素名称,
TAG_REQUEST_FOCUS:???
TAG_TAG:为设置parent设置tag
TAG_INCLUDE:如果当前的getDepth是0的话,那么就会抛出异常,根节点不能是标签
如果不是的话,首先获取到爸爸的layoutParams,然后将其设置给子View,子View再去遍历自己的孩子,遍历之后 爸爸将子View加入到自己的孩子当中。
TAG_MERGE:如果是抛出异常,必须是根节点才能是merge标签,现在遍历都是子View
其他情况:首先创建出子View,拿到爸爸的布局参数,继续遍历自己的子View,遍历之后,爸爸将其加入到自己的孩子当中。

6.如果name不是merge的话,
【1】创建出子 View的实例(创建子View的时候,用到了工厂模式)
【2】如果爸爸不是null,获取到爸爸的布局参数,如果不需要绑定到爸爸上,那么将参数设置给子View
【3】子 View去遍历自己的孩子
【4】如果爸爸不是null而且需要去将子View绑定在爸爸上,那么将子 View和布局参数一起加入到爸爸的孩子当中
【5】如果爸爸是空的或者不需要进行绑定,那么子View就是我们需要返回的那个View,将其赋值给result

7.返回result

Android面试题(28)-android的view加载和绘制流程 View的加载流程 view布局一直贯穿于整个android应用中,不管是activity还是fragment都给我们提供了一个view依附的对象,关于view的加载我们在开发中一直使用,在接下来的几篇文章中将介绍在android中的加载机制和绘制流程并且对于基于android6.0的源码进行分析探讨。这一部分先来分析一下activity中view的加载流程。 当我们打开activity时候,... 阅读详情

相关推荐

Android自定义View之(一)View绘制流程详解——向源码要答案

前言 View作为整个app的颜值担当,在Android体系中占有重要的地位。深入理解Android View的绘制流程,对正确使用View来构建赏心悦目的外观,以及用自定义View来设计理想中的酷炫效果等方面,有着极其重要的帮助作用,所以将View的绘制流程作为自定义View系列文章的第一篇。当然,View的绘制流程原理,在现实的工作中是成为高级工程师路上必须克服的障碍;在面试中...

编程知识分享 1123

Android studio报错: Unexpected type tag 80 found.

Android studio报错:Caused by: java.lang.IllegalArgumentException: Unexpected type tag 80 found.经检查是color添加颜色格式错误。前边需要加上FF,代表透明度。

芒果屋 484

保姆级教程:用YOLOv11和CRNN从零搭建一个车牌识别系统(附完整代码)

本文提供了一份详细的YOLOv11和CRNN实战指南,教你从零搭建高精度车牌识别系统。内容包括环境配置、数据集处理、模型训练与优化,以及系统集成与性能优化技巧,附完整代码实现。特别介绍了YOLOv11在车牌检测中的创新应用和CRNN在车牌识别中的关键技术。

weixin_28358083的博客 320

AndroidStudio一些奇奇怪怪的error

1.Error:java.lang.IllegalArgumentException: Unexpected type tag 67 found.重启AndroidStudio即可。引用:https://stackoverflow.com/questions/41677533/errorjava-lang-illegalargumentexception-unexpected-type-tag-6...

晓之所 4554

中兴FTTR光猫变简易OLT:低成本搭建全光监控与局域网实战指南

本文详细介绍了如何将中兴FTTR光猫改造为简易OLT设备,实现低成本全光监控与局域网扩展。通过LOID认证、桥接模式设置及终端数破解,用户可利用二手设备搭建高性能光纤网络,适用于远程监控和长距离组网场景,显著降低部署成本。

chair的专栏 2037

超详细版risc-v五级流水线cpu硬件设计实现解析

深入剖析risc-v五级流水线cpu的硬件架构与设计细节,涵盖指令流程、模块划分与关键时序控制,帮助理解risc-v五级流水线cpu的工作机制与优化策略。

weixin_42437253的博客 1633

解决方案:Unexpected end tag string

android strings.xml中的转义字符  以下为XML标志符的数字和字符串转义符  "     (" 或 ")  '     (' 或 ')  &     (& 或 &)  lt(  gt(>) (> 或 >)  如题:  比如:在string.xml中定义如下一个字符串,  大家好,欢迎来到e

天地会 1万+

保姆级教程:用Ansys Workbench找出BGA焊点最容易坏的位置(附热循环+振动分析)

本文提供了一份详细的Ansys Workbench教程,指导如何通过热循环和振动分析找出BGA焊点最容易失效的位置。从模型搭建、材料定义到网格划分和载荷设置,全面解析了BGA焊点可靠性分析的全流程,帮助工程师提前预防焊点开裂问题,提升电子封装设计的可靠性。

weixin_30983965的博客 420

unexpected type (position:END_DOCUMENT null@1:1 in java.io.InputStreamReader

自己写了个WCF,然后使用Andorid APP 调用WCF获取数据。但是报XmlPullParserException unexpected type (position:END_DOCUMENT null@1:1 in java.io.InputStreamReader异常。 原因出在自己配置WCF的时候使用了自定义绑定,而没有使用basicHttpBinding绑定。 开始的配置如下:

一切皆有联系 6141

逆变器LCL滤波器参数设计(一)

1.基本介绍 并网型逆变器一般是电流源逆变器,滤波器基本用LCL结构。 假设要设计额定功率10KVA的单相逆变器,采用两电平的全桥拓扑,采用SPWM控制,载波频率20KHz,电网等级220V,频率50Hz。 拓扑结构如图所示: 直流输入电压分为上下母线各1/2Vin,半母线电压为380V。 L1采用高频磁芯绕制,称为高频电感;L2用工频电感绕制,称工频电感;C是滤波电容,为高频谐波电流提供通路;Vg为电网电压。 载波调制比为:Mr=220*1.414/380=0.819 2.高频电感量的计算 逆变器可以等

weixin_43549807的博客 5万+

《大数据最全面试题-Offer直通车》目录

做好这些不用担心试用期不通过:程序员入职新公司如何快速上手项目本人遇到大数据面试题和参考答案(超过1万字精华版)大数据面试英文自我介绍参考(万字长文)大数据运维应用场景面试题汇总及参考答案(持续更新)万字数据仓库面试题及参考答案数据仓库数据质量监控和处理方法最佳实践数据仓库建模方法万字详解Doris的3种数据模型详解和数据仓库每一层的模型选用大数据面试临阵磨枪不知看什么?看这份心理就有底了-大数据常用技术栈常见面试100道题最全Hive面试题2024年(2万字详解)Elasticsearch 面试题及参考答

大模型大数据攻城狮的专栏 2646

Android应用层View绘制流程与源码分析

【工匠若水 http://blog.youkuaiyun.com/yanbober 转载烦请注明出处,尊重分享成果】1 背景还记得前面《Android应用setContentView与LayoutInflater加载解析机制源码分析》这篇文章吗?我们有分析到Activity中界面加载显示的基本流程原理,记不记得最终分析结果就是下面的关系:看见没有,如上图中id为content的内容就是整个View树的结构,所

工匠若水 14万+

微信8.0所有URL Scheme大全:隐藏入口与使用场景详解 内附195条微信URL Scheme

URL Scheme 类似于一个协议地址,它的作用和网页的https://差不多,只不过它不是打开网页,而是直接跳转到微信App内部的功能页面。→ 打开微信扫一扫→ 打开零钱通详情→ 打开微信面对面支付微信功能的“快捷指令”。整理下来,微信的 URL Scheme 基本覆盖了支付、联系人、扫一扫、小程序、运动设备等多个入口。对开发者来说,这些 Scheme 就像是隐藏的快捷通道,在某些场景(比如支付唤起、活动红包、客服入口)能大大简化流程。微信对外部调用限制非常严格。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2192

源码分析View的绘制流程

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。上面分享的腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。【Android思维脑图(技能树)】知识不体系?

2401_84010804的博客 1044

中科大大数据学院2023年保研夏令营机试题目【无offer,直接放题了~】(2023.07.22下午14:35-17:35考试)

给定一串数字,最后一个数是0表示结尾,表示数字串的终止,为无效数字。将该数字串存储在双向链表中,判断是否为回文串,若是,则输出Yes,否则输出No.

m0_51339444的博客 1922

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Android源码分析之View的绘制流程

Android View的绘制流程详解(包括View的来龙去脉) 对于Android开发者来说,View无疑是开发中经常接触的,包括它的事件分发机制、测量、布局、绘制流程等,如果要自定义一个View,那么应该对以上流程有所了解、研究。本系列文章将会为大家带来View的工作流程详细解析。在深入接触View的测量、布局、绘制这三个流程之前,我们从Activity入手,看看从Activity创建后到V...

博由心生,福泽一生 1477

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Android View原理解析之绘制流程(draw)

自定义View是Android进阶路线上必须攻克的难题,而在这之前就应该先对View的工作原理有一个系统的理解。本系列将分为4篇博客进行讲解,本文主要对View的绘制流程(draw)进行讲解。

CodingEnding的博客 1457

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Android源码分析之View绘制流程

 在Android的知识体系中,View扮演着很重要的的角色,简单来理解,View就是Android在视觉上的呈现。在界面上Android提供了一套GUI库,里面有很多控件,但很多时候系统提供的控件都不能很好的满足我们的需求,这时候就需要自定义View了,但仅仅了解基本控件的使用是无法做出复杂的自定义控件的。为所有了更好的自定义View,就需要掌握View的底层工作原理,比如View的测量、布局以...

大逗的博客 653

Android View的绘制流程

Android View的绘制三大流程 View的mesure、layout、draw三大流程。本文将详细讲解View的三大流程,阅读本文最好有牢固的Android基础,并且对Android View的基本结构有所了解。View的三大流程非常的重要,感觉现在面试必问。 同时,这个流程熟悉对于提升我们的开发水平也有很大的帮助。 在实际的开发中解决那种坑逼的问题时,熟悉三大流程必将事倍功半。 本文...

samuelnotes的专栏 4990

View绘制流程源码分析

源码分析第三篇,Activity启动后的View绘制流程的源码分析,由于View绘制牵扯内容太多,因此此篇文章略长,也许许多小伙伴看到部分就会失去耐心,但我相信若能全部看完,或多或少也会有点感悟,若能看完整有那些不足和有误的地方,请留言告知,感谢!!! (注:若有什么地方阐述有误,敬请指正。) View绘制基础概念 说到View绘制首先要先了解几个概念: Window:是一个抽象类,具有窗口管...

weixin_33973600的博客 296

Android View绘制流程(源码分析)

这里写目录标题一 前言二 View绘制2.1 View绘制的三个流程2.2 Android视图层次结构简介三 View绘制流程3.1 DecorView的创建(setContentView)3.2 顶层视图DecorView添加到窗口的过程3.3 ViewRootImpl(DecorView与window沟通的桥梁)3.3.1 执行流程3.4 measure过程分析3.4.1 MeasureSpec**和**ViewGroup.LayoutParams**类3.4.2 View测量的基本流程及重要方法分析3

qq_39431405的博客 1115

android View绘制源码分析

在开发过程中我们经常要进行view的自定义。如果熟练掌握自定义技巧的话就能做出很多控件出来。这篇博客来讲讲view绘制背后发生的那些事。view的基础知识view的绘制概括首先先说说view绘制的整体过程。 View绘制的源码分析 ,它的三大流程都是在ViewRootImpl中完成的,从ViewRootImpl中的performTraversals开始,有三个方法performMeasure,pe

u014486880的博客 1392
上一篇: 八大排序之快速排序
下一篇: Xposed模块初体验——第一篇
丸子哒哒哒
博客等级 码龄12年 31粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值