본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] AsyncLayoutInflater tutorial

by 돼지왕왕돼지 2020. 8. 22.


android async layout inflater

https://developer.android.com/reference/androidx/asynclayoutinflater/view/AsyncLayoutInflater


-

androidx 에 포함되어 있다.

inflate 하는 동안에도 UI 를 responsive 하게 가져갈 수 있다는 장점이 있음



-

AsyncLayoutInflater(this).inflate(resId:Int, parent:ViewGroup, listener:OnInflateFinishedListener?)


-

AsyncLayoutInflater 의 단점은 아래와 같다.

parent 의 generateLayoutParams() 가 thread-safe 해야 한다.

모든 뷰가 Handler 를 생성하거나 Looper.myLooper() 함수를 호출하지 말아야 한다.

LayoutInflater.Factory, LayoutInflater.Factory2 를 설정할 수 없다.

fragment 를 가진 layout 을 inflate 할 수 없다.



-

사용 예제 코드를 보자.

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        loadFirst.setOnClickListener { 
           loadAsync(R.layout.async) { 
             second.text = "I am second TextView" 
           } 
        }
    }
}

fun MainActivity.loadAsync(@LayoutRes res: Int, action: View.() -> Unit) = AsyncLayoutInflater(this).inflate(res, frame){ view, resid, parent ->
        with(parent) {
            addView(view)
            action(view)
        }
    }



-

끝!!




댓글0