我发现写博客真的很花时间,一个小问题都要研究很久,这里讲的Android绘制的总结。所有的调试都在Android 5.0
Android的View绘制一般分三步,onMeasure 计算width和height.onLayout计算位置,onDraw绘制,一般View还有个onFlinshInflate这个方法就是在布局xml文件里面的控件被解析加载进来结束后调用,所以结合Activity的生命周期就是onCreate -> View onFlinshInflate -> onStart -> onResume->View onMeasure->View onLayout -> View onDraw
View的invalidate 和 postInvalidate 这个很容易使用场景不一样,一个是在UI线程里面使用,一个是在非UI线程里面使用
View的invalidate 和 requestLayout。一个只调用onDraw方法重绘内容,一个会重新调用onMeasure,onLayout,onDraw把View的位置,内容都重绘一遍
附图一张,图片来源:https://plus.google.com/+ArpitMathur/posts/cT1EuBbxEgN
View的forceLayout 和 requestLayout,这个不太容易弄得清,看了几篇文章,总结就是如果是仅仅是自己改变size就调用requestLayout,如果觉得sibling view 也会受到影响或是ViewGroup觉得它子view都要重新布局,总这因为requestLayout有个追述ViewRoot的过程,会更慢