FragmentContainerView란?

액티비티에서 프래그먼트를 호스팅하는 일반적인 패턴 중 하나는 FrameLayout을 사용하는 것이다. androidx.fragment 1.2.0 에서는 FragmentContainerView라는 새로운 뷰를 도입했다.

FragmentContainerView는 Fragment를 위해 특별히 설계된 레이아웃이다. FrameLayout을 확장하여 프래그먼트 트랜잭션을 안정적으로 처리 할 수 ​​있고,  프래그먼트 동작을 조정할 수있는 추가 기능도 있다.

사용하는 방법은 프레그먼트용 컨테이너를 구현했던 방법과 동일하다.

 <androidx.fragment.app.FragmentContainerView
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/fragment_container_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
 </androidx.fragment.app.FragmentContainerView>

FragmentContainerView를 사용하여 android : name 속성을 사용하여 Fragment를 추가 할 수도 있다. FragmentContainerView는 다음과 같은 일회성 작업을 수행한다.

  • 프레그먼트의 새로운 인스턴스를 생성한다
  • Fragment.onInflate(Context, AttributeSet, Bundle)를 호출한다.
  • 프레그먼트를 프레그먼트 매니저에 추가하기 위한 프레그먼트 트랜잭션을 수행한다.

FrameLayout의 문제점

프레임 레이아웃은 프레그먼트의 z-ordering을 처리하는데 문제가 있다. 

예를들어 entering 애니메이션 이후 exiting 애니메이션은 그 아래에 깔리면서 exiting 애니메이션이 잘 표현되지 않는다. FragmentContainerView는 z-ordering 을 보장하므로 슬라이딩 애니메이션을 볼 수 있도록 해준다.

앞의 내용은 19년 안드로이드 Dev Summit에서 발표한 동영상을 캡쳐했다. 캡쳐가 아닌 자연스러운 애니메이션으로 확인하기 위해 링크를 참조할 수 있다.

Buy me a coffeeBuy me a coffee
카테고리: Android

0개의 댓글

답글 남기기

이메일은 공개되지 않습니다.