UI刷新重绘 :invalidate() 、postInvalidate()、requestLayout() 总结。
2016-09-26 21:12
513 查看
① invalidate() :
请求重绘View树,即draw()过程。把例子中他是整个刷新着UI,并且从头到尾并不会触发onMeasure()方法(控制大小用)。如果是View就重绘View,如果是ViewGroup就全部重绘。
一般引起invalidate()操作的函数如下:
1、直接调用invalidate()方法,请求重新draw(),但只会绘制调用者本身。
2、setSelection()方法 :请求重新draw(),但只会绘制调用者本身。
3、setVisibility()方法 : 当View可视状态在INVISIBLE转换VISIBLE时,会间接调用invalidate()方法,继而绘制该View。
4 、setEnabled()方法 : 请求重新draw(),但不会重新绘制任何视图包括该调用者本身。
②postInvalidate(); 与invalidate()方法区别就是,postInvalidate()方法可以在UI线程执行,也可以在工作线程执行
而invalidate()只能在UI线程操作。但是从重绘速率讲:invalidate()效率高。
③ requestLayout()
他跟invalidate()相反,他只调用measure()和layout()过程,不会调用draw()。
不会重新绘制任何视图包括该调用者本身。
④局部刷新
使用 requestFocus()方法,他只刷新你要刷新的地方。
他是让我们的某一部分获取焦点,获取焦点的会导致view的重绘。
请求重绘View树,即draw()过程。把例子中他是整个刷新着UI,并且从头到尾并不会触发onMeasure()方法(控制大小用)。如果是View就重绘View,如果是ViewGroup就全部重绘。
一般引起invalidate()操作的函数如下:
1、直接调用invalidate()方法,请求重新draw(),但只会绘制调用者本身。
2、setSelection()方法 :请求重新draw(),但只会绘制调用者本身。
3、setVisibility()方法 : 当View可视状态在INVISIBLE转换VISIBLE时,会间接调用invalidate()方法,继而绘制该View。
4 、setEnabled()方法 : 请求重新draw(),但不会重新绘制任何视图包括该调用者本身。
②postInvalidate(); 与invalidate()方法区别就是,postInvalidate()方法可以在UI线程执行,也可以在工作线程执行
而invalidate()只能在UI线程操作。但是从重绘速率讲:invalidate()效率高。
③ requestLayout()
他跟invalidate()相反,他只调用measure()和layout()过程,不会调用draw()。
不会重新绘制任何视图包括该调用者本身。
④局部刷新
使用 requestFocus()方法,他只刷新你要刷新的地方。
他是让我们的某一部分获取焦点,获取焦点的会导致view的重绘。
相关文章推荐
- invalidate() postInvalidate() requestLayout()-几个刷新重绘的方法你弄清楚区别了吗
- Android进阶十七:invalidate() 、postInvalidate()、requestLayout() 总结。
- Android中重绘刷新界面之invalidate、postInvalidate和requestlayout的区别
- Android中重绘刷新界面之invalidate、postInvalidate和requestlayout的区别
- Android界面刷新之invalidate与postInvalidate的区别
- TGraphicControl(自绘就2步,直接自绘自己,不需要调用VCL框架提供的函数重绘所有子控件,也不需要自己来提供PaintWindow函数让管理框架来调用)与TControl关键属性方法速记(Repaint要求父控件执行详细代码来重绘自己,还是直接要求Invalidate无效后Update刷新父控件,就看透明不透明这个属性,因为计算显示的区域有所不同)
- android异步UI刷新实例总结(二)--AsyncTask完成状态监控
- view, surfaceView, invalidate, postInvalidate, 刷新屏幕
- view, surfaceView, invalidate, postInvalidate, 刷新屏幕
- Android视图重绘,使用invalidate还是requestLayout
- view, surfaceView, invalidate, postInvalidate, 刷新屏幕
- Android View 重绘和更新invalidate 和requestLayout
- 在主线程的重绘2种情况(postInvalidate() ,Invalidate() )
- 绘图/更新UI,重绘requestLayout() invalidate()和postInvalidate()
- 面试 -- requestLayout、invalidate与postInvalidate区别
- android中Invalidate和postInvalidate的区别Android中实现view的更新有两组方法,一组是invalidate,另一组是postInvalidate,其中前者是在UI
- android异步UI刷新实例总结
- Android开发:Invalidate和postInvalidate刷新View的区别及应用-----ImageView绘制旋转圆环(二)
- Android:UI更新方法二:View.postInvalidate+Thread+Runnable
- android刷新UI的几种方式总结