1. OnGlobalLayoutListener
利用kotlin减少OnGlobalLayoutListener样板代码,让代码看上去更加awesome
传统java写法
recycler.viewTreeObserver.addOnGlobalLayoutListener(
object : ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
recycler.viewTreeObserver.removeOnGlobalLayoutListener(this);
// do whatever
}
});
kotlin写法
给View定义一个扩展函数
inline fun View.waitForLayout(crossinline f: () -> Unit) {
with(viewTreeObserver) {
addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
removeOnGlobalLayoutListener(this)
f()
}
})
}
}
使用
view.waitForLayout {
// do whatever
}