kotlin for Andrid

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
}

猜你喜欢

转载自blog.csdn.net/H_Zhang/article/details/116525175