vs2019中如何调用isinvalidate函数数


VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

还剩22页未读 继续阅读

抄袭、复制答案以达到刷声望汾或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号是时候展现真正的技术了!





下面我们来具体进行分析invalidate(true)函数的執行流程:

HAS_BOUNDS)的意思指的是如果View需要重绘并且其大小不为0其余几个本人也未完全理解,还望高手指点~~如果需要重绘则处理相关标志位3、对于开启硬件加速的应用程序,则调用父视图的invalidateChild函数绘制整个区域否则只绘制dirty区域(r变量所指的区域),这是一个向上回溯的过程每一层的父View都将自己的显示区域与传入的刷新Rect做交集。接下来看invalidateChild()的


大概流程如下我们主要关注dirty区域不是null(非硬件加速)的情况:

ViewGroup中该函数的主要作用是对dirty区域进行计算以上过程的主体是一个do{}while{}循环,不断的将子视图的dirty区域与父视图做运算来确定最终要重绘的dirty区域最终循環到ViewRoot(ViewRoot的parent为null)为止,并将dirty区域保存到ViewRoot的mDirty变量中



该函数首先调用offset将子视图的坐标位置转换为在父视图(当前视图)的显示位置这里主要考慮scroll后导致子视图在父视图中的显示区域会发生变化,接着调用union函数求得当前视图与子视图的交集,求得的交集必定是小于dirty的范围因为子视圖的dirty区域有可能超出其父视图(当前视图)的范围,最后返回当前视图的父视图


具体分析如下: 1、判断此次调用是否在UI线程中进行

加载Φ,请稍候......

我要回帖

更多关于 validate函数 的文章

 

随机推荐