重绘requestLayout() invalidate()和postInvalidate()
来源:互联网 发布:网络培训机构排名 编辑:程序博客网 时间:2024/05/29 19:13
Android中实现view的更新
当view确定自身已经不再适合现有的区域时,该view本身调用这个方法要求parent view(父类的视图)重新调用他的onMeasure、onLayout来重新设置自己位置。特别是当view的layoutparameter发生改变,并且它的值还没能应用到view上时,这时候适合调用这个方法。
2.invalidate()
UI线程自身中使用,利用invalidate()刷新界面,实例化一个Handler对象,并重写handleMessage方法调用invalidate()实现界面刷新;而在线程中通过sendMessage发送界面更新消息。invalidate()方法虽然最终会调用到performTraversals()方法中,但这时measure和layout流程是不会重新执行的,因为视图没有强制重新测量的标志位,而且大小也没有发生过变化,所以这时只有draw流程可以得到执行。
Invalidate调用onDraw方法,requestLayout调用onMeasure和onLayout,不一定调用onDraw。
在非UI线程中使用(工作者线程中被调用)。 使用postInvalidate()方法来刷新屏幕,调用后它会用handler通知UI线程重绘屏幕。postInvalidate(left, top, right, bottom) 方法 通过UI线程来刷新规定矩形区域。
invalidate()和postInvalidate()的使用与区别- http://blog.csdn.net/molu_chase/article/details/52572796
重新绘制某个View,或绘制整个layout??
1.requestLayout()
如果你希望视图的绘制流程可以完完整整地重新走一遍,就不能使用invalidate()方法,而应该调用requestLayout()了。当view确定自身已经不再适合现有的区域时,该view本身调用这个方法要求parent view(父类的视图)重新调用他的onMeasure、onLayout来重新设置自己位置。特别是当view的layoutparameter发生改变,并且它的值还没能应用到view上时,这时候适合调用这个方法。
2.invalidate()
UI线程自身中使用,利用invalidate()刷新界面,实例化一个Handler对象,并重写handleMessage方法调用invalidate()实现界面刷新;而在线程中通过sendMessage发送界面更新消息。invalidate()方法虽然最终会调用到performTraversals()方法中,但这时measure和layout流程是不会重新执行的,因为视图没有强制重新测量的标志位,而且大小也没有发生过变化,所以这时只有draw流程可以得到执行。
Invalidate调用onDraw方法,requestLayout调用onMeasure和onLayout,不一定调用onDraw。
invalidate:View本身调用迫使view重画。
View的重绘,在Activity1中 使用invalidate()方法来重绘, 然后我跳到了Activity2这时候Activity1已经finash()掉 可是Activity1中 的invalidate() 的线程还在程序中,Android的虚拟机不可能主动杀死正在运行中的线程所以这样操作是非常危险的。因为它是在UI线程中被动掉用的所以很不安全。
invalidate() 更新整个屏幕区域
invalidate(Rect rect) 更新Rect区域
invalidate(l, t, r, b) 更新指定矩形区域
在非UI线程中使用(工作者线程中被调用)。 使用postInvalidate()方法来刷新屏幕,调用后它会用handler通知UI线程重绘屏幕。postInvalidate(left, top, right, bottom) 方法 通过UI线程来刷新规定矩形区域。
invalidate()和postInvalidate()的使用与区别- http://blog.csdn.net/molu_chase/article/details/52572796
Android视图状态及重绘流程分析,带你一步步深入了解View(三)- http://blog.csdn.net/guolin_blog/article/details/17045157
Invalidate和postInvalidate,android界面刷新- http://blog.csdn.net/vincent_czz/article/details/7018725
0 0
- 重绘requestLayout() invalidate()和postInvalidate()
- Android invalidate() 、postinvalidate()和requestLayout()
- invalidate、postInvalidate和requestLayout区别
- UI刷新重绘 :invalidate() 、postInvalidate()、requestLayout() 总结。
- requestLayout, invalidate和postInvalidate的异同
- requestLayout, invalidate和postInvalidate的异同
- requestLayout, invalidate和postInvalidate的异同
- requestLayout, invalidate和postInvalidate的异同
- requestLayout, invalidate 和 postInvalidate 的异同
- requestLayout, invalidate和postInvalidate的异同
- View 中requestLayout 和 invalidate,postinvalidate() 区别
- invalidate和requestLayout、postinvalidate方法使用说明
- invalidate() postInvalidate() requestLayout()-几个刷新重绘的方法你弄清楚区别了吗
- invalidate() vs postInvalidate() vs requestLayout()
- Android中Invalidate和postInvalidate和requestLayout的区别
- Android中Invalidate和postInvalidate和requestLayout的区别
- Android中Invalidate和postInvalidate和requestLayout的区别
- Android中Invalidate和postInvalidate和requestLayout的区别
- Codeforces772C
- 【精华分享】【Unity&独立游戏&音效】免费音效网站总览
- uvm之寄存器模型
- Hive 数据导入HBase的2种方法详解
- 稳定排序:插入排序
- 重绘requestLayout() invalidate()和postInvalidate()
- 【2017.04.19】腾讯二面面经
- Java Out of Memory 分析
- tab切换
- swoole 安装方法
- 计算机中的同步和异步
- 【龙芯1c库】封装gpio接口和使用示例
- c++实验4
- ryzom-contribution /code/ryzom/server/shard_unifier_service_default.cfg