Android View
Android中慎用View#getViewTreeObserver#addOnGlobalLayoutListener来获取view的高度
-
Activity在onCreate()执行View.post(Runnable),缓存Runnable ViewGroup和View执行完ViewRootImpl.performTraversals(measure,layout,draw)后执行Runnable回调
invalidate()与postInvalidate(),requestLayout()三者区别?
invalidate() | postInvalidate() | requestLayout() |
---|---|---|
在ui线程执行 | 在工作线程执行 | – |
onDraw() | onDraw() | onMeause(),onLayout(),onDraw() |
onMeasure()有几种Mode?
有三种模式:
UNSPECIFIED
这说明parent没有对child强加任何限制,child可以是它想要的任何尺寸。
EXACTLY
Parent为child决定了一个绝对尺寸,child将会被赋予这些边界限制,不管child自己想要多大。
AT_MOST
Child可以是自己任意的大小,但是有个绝对尺寸的上限。View常用方法
onAttachedToWindow,onDetachedFromWindow
RecyclerView,ListView
ViewPager
[软件绘制和硬件绘制区别](https://developer.android.google.cn/guide/topics/graphics/hardware-accel#software-model)
软件的绘制过程软件的绘制过程 1、对层次结构进行无效化处理 2、绘制层次结构
缺点:
1、未视图改变的也会重新绘制 2、存在重复绘制同一个视图
硬件加速绘制
1、对层次结构进行无效化处理 2、记录并更新显示列表() 3、绘制显示列表
Comments