addOnDrawListener 方法的兼容性问题


对本知识点有任何问题,可加我的个人微信:kymjs123

当一个视图树绘制时调用OnDrawListeneronDraw()函数,经常用这个回调来监控 View 的变化。
但是这个方法在 Android8.0 之前有个坑:Viewattachwindow 之前调用 getViewTreeObserver().addOnDrawListener() 将不会进入回调。因为ViewTreeObservermerge()方法中没有处理OnDrawListener详见源码。

可是这个坑爹的问题,却在 Android 8.0 之后被偷偷的修复了,为了兼容问题,最好是使用 OnPreDrawListener 这个回调去替代 OnDrawListener。 最近就被这个问题给坑了。