Android

[Android] ViewPager2

더구더구 2021. 12. 29. 23:12

ViewPager2

https://developer.android.com/training/animation/vp2-migration?hl=ko 

 

ViewPager에서 ViewPager2로 이전  |  Android 개발자  |  Android Developers

ViewPager에서 ViewPager2로 이전 ViewPager2는 ViewPager 라이브러리의 개선된 버전으로, 향상된 기능을 제공하며 ViewPager 사용 시 발생하는 일반적인 문제를 해결합니다. 앱에서 ViewPager를 이미 사용하고

developer.android.com

뷰페이저는 화면을 스크롤 해서 넘겨 볼수 있는 프래그먼트 간 슬라이드입니다

기존에는 ViewPager를 사용해왔는데 개선된 버전의 ViewPager2가 나왔습니다.

 

ViewPager2는 지속적으로 업데이트 중이지만 ViewPager는 이제 지원을 하지 않기 때문에

실무에서도 결국 ViewPager2로 다 바뀔 것 같습니다.

 

ViewPager2로 업그레이드 되고 새로운 장점들이 생겼습니다.

 

Vertical Orientation Support

세로 방향을 지원합니다.

기존에는 가로로만 슬라이드 할수 있었지만 ViewPager2에서는 세로를 지원합니다.

 

Right to Letf(RTL)

오른쪽에서 왼쪽으로의 페이징을 지원합니다.

 

수정 가능한 프래그먼트 컬랙션

ViewPager2는 수정 가능한 프래그먼트 컬렉션을 통해 페이징을 지원하며

기본 컬렉션이 변경되면 notifyDatasetChanged()를 호출하여 UI를 업데이트합니다.

즉, 앱은 런타임 시 프래그먼트 컬렉션을 동적으로 수정할 수 있고,

그러면 ViewPager2는 수정된 컬렉션을 올바르게 표시합니다.

 

라고 안드로이드 디벨로퍼 사이트에 나와 있습니다.

기존 ViewPager에서는 notifyDatasetChanged()가 동작이 잘 안됬는데 개선된 부분인 것 같습니다.

 

DiffUtil

DiffUtil은 RecyclerView의 성능을 한층 더 개선할 수 있게 해주는 유틸리티 클래스입니다.

기존의 데이터 리스트와 교체할 데이터 리스트를 비교해서 실질적으로 업데이트가 필요한 아이템들을 추려냅니다.

 

 

이제 직접 사용해보겠습니다

RecyclerView 기반이라 리사이클러뷰와 상당히 유사합니다.

 

 

1. 종속성 추가

dependencies {
    implementation("androidx.viewpager2:viewpager2:1.0.0")
}

ViewPager2를 사용하기 위해선 manifast에 추가해줘야 합니다.

implementation 'com.google.android.material:material:1.4.0'

근데 저는 기본으로 있는 material에 뷰페이저2가 포함되어 있어서 따로 정의 할 필요가 없다고 들었고

실제로 사용할때도 따로 추가하지 않고 사용했는데 다른 블로그도 그렇고 디벨로퍼 사이트에도 그렇고

추가하라고 하니까 추가 하는게 안전할 것 같습니다.

이부분 아시는 분 있으면 댓글 달아주세요ㅠㅠ

 

2.  레이아웃에 Viewpager2 추가

 

activity_main

간단하죠?

 

3.  ViewPager2에 나타낼 아이템 뷰 추가

 

item_viewpager

저는 간단하게 텍스트뷰 하나 추가했습니다

 

4. 데이터 클래스 생성

 

Hi

 

텍스트뷰에 넣어줄 데이터 클래스를 생성했습니다.

 

5. Adapter 생성

 

HiAdapter

 

어댑터 클래스입니다.

 

6. MainActivity에서 ViewPager2 정의

 

MainActivy

 

7. 실행

 

 

옆으로 슉슉 잘 넘어 갑니다!