Android View 中view.requestLayout() 与 invalidate()

来源:互联网 发布:交通大数据应用 编辑:程序博客网 时间:2024/04/29 07:54
requestLayout:当view确定自身已经不再适合现有的区域时,该view本身调用这个方法要求parent view重新调用他的onMeasure onLayout来对重新设置自己位置。 特别的当view的layoutparameter发生改变,并且它的值还没能应用到view上,这时候适合调用这个方法。

invalidate:View本身调用迫使view重画。

View.requestLayout() 请求重新布局(requestFocus()函数也会引起视图重绘
View.invalidate()        刷新视图,相当于调用View.onDraw()方法

invalidate()函数的主要作用是请求View树进行重绘,该函数可以由应用程序调用,或者由系统函数间接调用,例如setEnable(), setSelected(), setVisiblity()都会间接调用到invalidate()来请求View树重绘,更新View树的显示。

nvalidate主要给需要重绘的视图添加DIRTY标记,并通过和父视图的矩形运算求得真正需要绘制的区域,并保存在ViewRoot中的mDirty变量中,最后调用scheduleTraversals发起重绘请求,scheduleTraversals会发送一个异步消息,最终调用performTraversals()执行重绘

0 0
原创粉丝点击