일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Flutter
- react
- RxJava
- Go언어
- RxKotiln
- 코딩테스트
- android compose
- Rxjava 안드로이드
- 잡담
- 이펙티브 코틀린
- Swift 문법
- Java
- 코틀린
- 안드로이드 개발자
- 알고리즘
- 안드로이드 다이얼로그
- 안드로이드
- Firebase
- 이펙티브코틀린
- Kotiln
- 안드로이드 컴포즈
- 반응형 프로그래밍
- 개발자
- swift map
- MVVM
- 일상
- 코루틴
- 프로그래머스
- Dev6
- android
- Today
- Total
최데브는 오늘도 프로그래밍을 한다.
[안드로이드] ViewPager2 본문
프로젝트를 하다가 간만에 Viewpager 를 쓸일이 생겼다.
뷰페이저 자체가 예전부터 있었다보니 여러가지 방법으로 구현하는 방식이 있는데
이번에 나는 ViewPager2 와 FragmentStateAdapter 를 이용해서 만들어 보기로 했다.
먼저 ViewPager 가 지원중단되고 ViewPager2 로 몇년전에 넘어가게 됐는데
알아보는김에 왜 바뀌게 됐는지도 한번 알아보자.
대표적인 ViewPager 의 문제는
1. 리사이클러뷰에 뷰페이저를 집어 넣을때 발생한다.
뷰페이저는 PagerAdapter 기반으로 구성됐는데 스크롤을 할때마다
instantiateltem() 과 destroyItem() 메소드가 호출되면서 스크롤이 버벅거리는 문제가 있었다.
* instantiateltem() : 화면에 표시할 페이지뷰를 만들때 PagerAdapter 에서 instantiateltem()를 수행.
2. notifyDataSetChanged() 버그
유저가 뷰페이저에 대한 동작을 할때 페이지에 보이는 컨텐츠가 변경되는 상황이 있을 수 있는데 자체적인 버그가 있어서 동작이 제대로 되지 않았다고 한다.
등등 문제가 있었겠지만 그런 문제 떄문에 새로 나오게 된 ViewPager2
ViewPager2 는 RecyclerView 를 기반으로 만들어졌기 때문에 위 문제들이 싹 해결이 됐다.
그리고 추가적인 기능들도 생겼는데
1. 가로페이징도 지원하고 세로 페이징도 지원함.
2. 오른쪽에서 왼쪽으로의 페이징도 지원함
3. 데이터 변경이 가능한 프래그먼트의 데이터가 변화하면 notifyDataSetChanged() 가 호출되며 UI 를 업데이트 함.
4. RecyclerView 를 기반으로 만들어졌기 때문에 DiffUtil 이나 데이터변경이 될때 사용할 수 있는 변경 애니메이션도 사용가능함.
사용 방법도 완전 간단하다.
공식 문서를 참고해보자.
https://developer.android.com/training/animation/vp2-migration?hl=ko#migrate
'Android > Android UI' 카테고리의 다른 글
splahScreen 안드로이드 12 버전에 적용하기 (0) | 2023.01.14 |
---|---|
include layout 의 viewBinding id 참조하기 (1) | 2022.07.28 |
안드로이드 action mode (0) | 2022.01.11 |
안드로이드 - BottomSheet , BottomSheetBehavior (0) | 2021.08.31 |
안드로이드 UI 공부 참고 (0) | 2021.08.26 |