ViewPager2 좋다.

ViewPager2에 대한 설명은 생략하고, 사용하면서 느낀 점만 써 보았습니다.

들어가며

컨텐츠를 세로만으로 표시하기 벅찰 때, 또는 카드 형식으로 평행하게 컨텐츠를 배치하고 싶을 때, ViewPager를 쓰면 좋다.

ViewPager vs ViewPager2

ViewPager는 스와이프 할 수 있도록 뷰나 프래그먼트를 띄운다.

비교적 최근인 올해 4월에 ViewPager2 1.0.0 버전이 출시되었다.

문서에 의하면 ViewPager에 비해 달라진 점은 다음과 같다.

세로 방향 지원

RecyclerViewSnapHelper 없이도 세로로 넘기는 스와이프(스크롤 아님)뷰를 만들 수 있다.

RTL 페이징 지원

RTL 페이징은 아직 써본 적이 없어 잘 모르겠다.

프래그먼트 컬렉션 런타임에 동적으로 수정

프래그먼트 컬렉션을 동적으로 수정할 수 있다는 부분은 솔깃했다. 이전에 ViewPager를 쓰려면 프래그먼트를 스폰하는 코드를 관리하며 생명주기와 인자, 퍼포먼스까지 신경써야 했는데, 어떻게 개선되었을 지 궁금하다(아직 안 써봤다).

DiffUtil 지원

RecyclerView가 지원하는을 DiffUtil을 제공한다. RecyclerView 기반으로 빌드되었기 때문이다.

RecyclerView 기반

ViewPager2RecyclerView를 토대로 만들었다고 한다. 덕분에 가장 좋은 점이라 하면, 느낀 바 중에는 ViewPager2RecyclerView로 바꿀 때에 편했다는 것이다.

ViewPager2RecyclerView.Adapter를 사용할 수 있다. 물론 PagerAdapter도 사용할 수 있다.

RecyclerView.Adapter를 사용하는 경우, 특정 뷰에 한정되는 코드 몇 줄(Page Transformer 같은)을 제외하면 <androidx.viewpager2.widget.ViewPager2><androidx.recyclerview.widget.RecyclerView> 사이의 전환이 자유로웠다.

마치며

안드로이드가 점점 발전하고 있다. 공부하자.

Reference

  • https://developer.android.com/jetpack/androidx/releases/viewpager2?hl=ko

댓글