ViewPager2에 대한 설명은 생략하고, 사용하면서 느낀 점만 써 보았습니다.
들어가며
컨텐츠를 세로만으로 표시하기 벅찰 때, 또는 카드 형식으로 평행하게 컨텐츠를 배치하고 싶을 때, ViewPager를 쓰면 좋다.
ViewPager vs ViewPager2
ViewPager는 스와이프 할 수 있도록 뷰나 프래그먼트를 띄운다.
비교적 최근인 올해 4월에 ViewPager2 1.0.0 버전이 출시되었다.
문서에 의하면 ViewPager에 비해 달라진 점은 다음과 같다.
세로 방향 지원
RecyclerView와 SnapHelper 없이도 세로로 넘기는 스와이프(스크롤 아님)뷰를 만들 수 있다.
RTL 페이징 지원
RTL 페이징은 아직 써본 적이 없어 잘 모르겠다.
프래그먼트 컬렉션 런타임에 동적으로 수정
프래그먼트 컬렉션을 동적으로 수정할 수 있다는 부분은 솔깃했다. 이전에 ViewPager를 쓰려면 프래그먼트를 스폰하는 코드를 관리하며 생명주기와 인자, 퍼포먼스까지 신경써야 했는데, 어떻게 개선되었을 지 궁금하다(아직 안 써봤다).
DiffUtil 지원
RecyclerView가 지원하는을 DiffUtil을 제공한다. RecyclerView 기반으로 빌드되었기 때문이다.
RecyclerView 기반
ViewPager2는 RecyclerView를 토대로 만들었다고 한다. 덕분에 가장 좋은 점이라 하면, 느낀 바 중에는 ViewPager2를 RecyclerView로 바꿀 때에 편했다는 것이다.
ViewPager2는 RecyclerView.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
댓글