Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群25
Java1234官方群25:838462530
        

GIT视频教程(结合github,码云)免费领取

SpringBoot打造全栈在线教育平台实战课程

SpringBoot打造企业级进销存

Java1234 VIP课程

领取微信扫码登录Java实现视频教程

Java1234至尊VIP(特价活动)

Android面试题大全 PDF 下载


分享到:
时间:2020-05-13 16:28来源:http://www.java1234.com 作者:小锋  侵权举报
Android面试题大全 PDF 下载
失效链接处理
Android面试题大全 PDF 下载

本站整理下载:
 
相关截图:
 
主要内容:

2019 年百度 Android 面试题-公共技术点 之 View 绘制流程 View 绘制机制 1. View 树的绘图流程【文末有彩蛋】 当 Activity 接收到焦点的时候,它会被请求绘制布局,该请求由 Android framework 处理.绘制是从根节点开始,对布局树进行 measure 和 draw。整个 View 树的绘图流程在 ViewRoot.java 类的 performTraversals()函数展开,该函数 所做 的工作可简单概况为是否需要重新计算视图大小(measure)、是否需要重新 安置视图的位置(layout)、以及是否需要重绘(draw),流程图如下: View 绘制流程函数调用链
需要说明的是, 用户主动调用 request,只会出发 measure 和 layout 过程,而不会执行 draw 过程2. 概念 measure 和 layout 从整体上来看 Measure 和 Layout 两个步骤的执行:
树的遍历是有序的,由父视图到子视图,每一个 ViewGroup 负责测绘它所有的 子视图,而最底层的 View 会负责测绘自身。 具体分析 measure 过程由 measure(int, int)方法发起,从上到下有序的测量 View,在 measure 过程的最后,每个视图存储了自己的尺寸大小和测量规格。 layout 过 程由 layout(int, int, int, int)方法发起,也是自上而下进行遍历。在该过程中,每 个父视图会根据 measure 过程得到的尺寸来摆放自己的子视图。 measure 过程会为一个 View 及所有子节点的 mMeasuredWidth 和 mMeasuredHeight 变量赋值,该值可以通过 getMeasuredWidth()和 getMeasuredHeight()方法获得。而且这两个值必须在父视图约束范围之内,这 样才可以保证所有的父视图都接收所有子视图的测量。如果子视图对于 Measure 得到的大小不满意的时候,父视图会介入并设置测量规则进行第二次 measure。比如,父视图可以先根据未给定的 dimension 去测量每一个子视图, 如果最终子视图的未约束尺寸太大或者太小的时候,父视图就会使用一个确切的 大小再次对子视图进行 measure。 measure 过程传递尺寸的两个类
1.ViewGroup.LayoutParams (View 自身的布局参数) 2.MeasureSpecs 类(父视图对子视图的测量要求) ViewGroup.LayoutParams 这个类我们很常见,就是用来指定视图的高度和宽度等参数。对于每个视图的 height 和 width,你有以下选择: 1.具体值 2.MATCH_PARENT 表示子视图希望和父视图一样大(不包含 padding 值) 3.WRAP_CONTENT 表示视图为正好能包裹其内容大小(包含 padding 值) ViewGroup 的子类有其对应的 ViewGroup.LayoutParams 的子类。比如 RelativeLayout 拥有的 ViewGroup.LayoutParams 的子类 RelativeLayoutParams。 有时我们需要使用 view.getLayoutParams() 方法获取一个视图 LayoutParams, 然后进行强转,但由于不知道其具体类型,可能会导致强转错误。其实该方法得 到的就是其所在父视图类型的 LayoutParams,比如 View 的父控件为 RelativeLayout,那么得到的 LayoutParams 类型就为 RelativeLayoutParams

 

------分隔线----------------------------
锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程