ViewPager2
최근 업데이트 | 안정화 버전 | 출시 후보 버전 | 베타 버전 | 알파 버전 |
---|---|---|---|---|
2024년 5월 14일 | 1.1.0 | - | - | - |
AndroidX 종속 항목
ViewPager2
를 사용하려면 프로젝트의 build.gradle
파일에 다음 AndroidX 종속 항목을 추가합니다.
Groovy
dependencies { implementation "androidx.viewpager2:viewpager2:1.1.0" }
Kotlin
dependencies { implementation("androidx.viewpager2:viewpager2:1.1.0") }
의견
제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 제출하기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.
자세한 내용은 Issue Tracker 문서를 참고하세요.
버전 1.1.0
버전 1.1.0
2024년 5월 14일
androidx.viewpager2:viewpager2:1.1.0
이 출시되었습니다. 버전 1.1.0에 포함된 커밋을 확인하세요.
1.0.0 이후 중요 변경사항
- RecyclerView
1.3.1-rc01
이상과 함께 사용할 때 발생하는 비정상 종료를 수정합니다. - 이제
ViewPager2
가CollectionInfo
및CollectionItemInfo
를 올바르게 채우며, RecyclerView1.2.0-alpha02
이상에서는 더 이상 기본적으로 채우지 않습니다. FragmentStateAdapter
내부에서 발생하는 프래그먼트 수명 주기 변경을 수신 대기하기 위한FragmentTransactionCallback
인터페이스를 추가했습니다.FragmentManager
에 프래그먼트를 추가할 때 최초 프래그먼트 메뉴 가시성에서 발생하는FragmentStateAdapter
문제를 수정했습니다.- 창 인셋 전달을 수정했습니다. 이제 모든 페이지에서 동일한 인셋을 가져옵니다. 동위 뷰에서 인셋을 사용할 수 없도록 할 수 있는 이전 API 버전(API 30 미만)에서
WindowInsets
가 전달되는 방식으로 인해 API 30 미만 기기에 인셋을 적용하려면WindowInsetsApplier.install(viewPager2)
를 통해 이 수정사항을 선택해야 합니다.
버전 1.1.0-rc01
2024년 5월 1일
androidx.viewpager2:viewpager2:1.1.0-rc01
이 1.1.0-beta02 이후 중요한 변경사항 없이 출시되었습니다. 버전 1.1.0-rc01에는 이 커밋이 포함되어 있습니다.
버전 1.1.0-beta02
2023년 5월 24일
androidx.viewpager2:viewpager2:1.1.0-beta02
이 출시되었습니다. 버전 1.1.0-beta02에 포함된 커밋을 확인하세요.
API 변경사항
FragmentTransactionCallback
에 Fragment 상태 저장 콜백을 추가했습니다. 추가했습니다. (I45b90)- 이제
ViewPager2
는 더 이상 이전 API 버전(30 미만)의 손상된WindowInsets
전달을 수정하려고 시도하지 않습니다. 수정 자체가ViewPager2
의 형제에 해로울 수 있기 때문입니다. 수정사항은 계속 사용할 수 있지만 개발자가 사례별로 결정할 수 있도록 선택사항이 되었습니다.WindowInsetsApplier.install(viewPager2))
를 호출하여 수정사항을 사용 설정합니다. (Ic9a85)
버그 수정
- 최신 버전의
RecyclerView
와의 호환성 문제를 수정했습니다. 이 버전의ViewPager2
사용자는RecyclerView
1.3.1-rc01 이상으로 업데이트해야 합니다.
버전 1.1.0-beta01
2021년 8월 4일
androidx.viewpager2:viewpager2:1.1.0-beta01
이 출시되었습니다. 버전 1.1.0-beta01에 포함된 커밋을 확인하세요.
API 변경사항
Kotlin 1.4를 사용하도록 AndroidX를 업그레이드합니다. (Id6471, b/165307851, b/165300826)
모든 AndroidX 라이브러리에 맞게 자바 8 타겟팅으로 이동합니다. (2923f39)
버그 수정
- 창 인셋 전달을 수정했습니다. 이제 모든 페이지에서 동일한 인셋을 가져옵니다. (I47fef)
버전 1.1.0-alpha01
2020년 4월 1일
androidx.viewpager2:viewpager2:1.1.0-alpha01
가 출시되었습니다. 버전 1.1.0-alpha01에 포함된 커밋을 확인하세요.
이 출시는 RecyclerView 1.2.0-alpha02의 변경사항을 포함하며 RecyclerView
에서 더 이상 기본적으로 제공하지 않는 CollectionInfo
및 CollectionItemInfo
를 채웁니다. RecyclerView 1.2.0-alpha02
로 업데이트하면 접근성 회귀를 방지하기 위해 ViewPager2
도 업데이트됩니다.
새로운 기능
FragmentStateAdapter
내부에서 발생하는 프래그먼트 수명 주기 변경을 수신 대기하기 위한FragmentTransactionCallback
인터페이스를 추가했습니다. (Ibda77)
버그 수정
FragmentManager
에 프래그먼트를 추가할 때 최초 프래그먼트 메뉴 가시성에서 발생하는FragmentStateAdapter
문제를 수정했습니다. (I9d2ff, b/144442240)
버전 1.0.0
버전 1.0.0
2019년 11월 20일
androidx.viewpager2:viewpager2:1.0.0
이 1.0.0-rc01에서 변경사항 없이 출시되었습니다. 버전 1.0.0에 포함된 커밋을 확인하세요.
1.0.0의 주요 기능
- 이전 ViewPager 구현의 개선사항:
- RTL(오른쪽에서 왼쪽) 레이아웃 지원
- 수직 방향 지원
- 안정적인
Fragment
지원(기본Fragment
컬렉션 변경사항 처리 포함) - 데이터 세트 변경 애니메이션(
DiffUtil
지원 포함)
- 이전
ViewPager
구현에서 쉽게 이전할 수 있습니다(가능하다면 API 패리티). 이전 가이드 및 샘플 앱을 참고하세요.
ViewPager2를 사용하여 프래그먼트 간에 슬라이드하는 방법은 가이드를 참고하세요.
버전 1.0.0-rc01
2019년 10월 23일
androidx.viewpager2:viewpager2:1.0.0-rc01
이 1.0.0-beta05
이후 변경사항 없이 출시되었습니다. 버전 1.0.0-rc01에 포함된 커밋을 확인하세요.
버전 1.0.0-beta05
2019년 10월 9일
androidx.viewpager2:viewpager2:1.0.0-beta05
가 출시되었습니다. 버전 1.0.0-beta05에 포함된 커밋을 확인하세요.
버그 수정
- 화면 밖 페이지에서 페이지 변경을 초래하는
requestFocus
가 수정되었습니다. 이제 동작이 원래 ViewPager와 일치합니다. (b/140656866) - 페이지 변경 후 화면 밖 페이지에 남아 있는
focus
가 수정되었습니다. 이제 페이지를 변경할 때 포커스가 해제됩니다. (b/140656866) - 페이지 변경 시
Fragment
일시중지/다시 시작 트랜잭션의 순서가 수정되었습니다(이제 새 항목을 다시 시작하기 전에 항상 이전 기본 항목을 일시중지함). (b/139489059) canScrollHorizontally(int)
및canScrollVertically(int)
가 수정되었습니다. 이제 이러한 메서드는 ViewPager2가 지정된 방향으로 스크롤할 수 있는지 여부를 반환합니다. (b/141848404)- ViewPager2에서 더 잘 작동하도록 SwipeRefreshLayout의 문제가 수정되었습니다.
버전 1.0.0-beta04
2019년 9월 5일
androidx.viewpager2:viewpager2:1.0.0-beta04
이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
버그 수정
Fragment
백 스택 관련FragmentStateAdapter
에지 케이스(edge case) 문제가 수정되었습니다. (b/139095195)- 입력/포커스 시 스크롤/페이지 이동을 초래하는 특정 속성 구성 관련
EditText
문제가 수정되었습니다. (b/138044582, b/139432498) ItemDecoration
인스턴스 관련 문제 및 오버스크롤 표시기 위치 지정 문제가 수정되었습니다. (b/139012032)ViewPager2
에서 더 잘 작동하도록 RecyclerView, NestedScrollView 및 Navigation과 같은 다른 구성요소의 여러 문제가 수정되었습니다.
버전 1.0.0-beta03
2019년 8월 7일
androidx.viewpager2:viewpager2:1.0.0-beta03
이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
버그 수정
- 일시적인
Fragment
상태와 관련된FragmentStateAdapter
문제가 수정되었습니다. (b/134246546) - 부드럽게 스크롤하는 동안 데이터 세트가 변경될 때 발생하는
currentItem
및scrollState
문제가 수정되었습니다(에지 케이스가 해결됨). (b/137642608) PageTransformer
(MarginPageTransformer
포함) 애니메이션이 데이터 세트 변경 애니메이션과 충돌하는 문제가 수정되었습니다. (b/134658996)- 큰 데이터 세트의 부드러운 스크롤 애니메이션 문제가 수정되었습니다(
float
정수 값 제한). (b/134858960)
버전 1.0.0-beta02
2019년 7월 19일
androidx.viewpager2:viewpager2:1.0.0-beta02
가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
버그 수정
1.0.0-beta01
에 도입된 의도치 않은 jacoco 종속 항목이 삭제되었습니다. (b/137782951)
버전 1.0.0-beta01
2019년 7월 17일
androidx.viewpager2:viewpager2:1.0.0-beta01
이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
버그 수정
- 데이터 세트를 스크롤하고 업데이트하는 동안 발생하는
ViewPager2.updateCurrentItem
비정상 종료 문제가 수정되었습니다. ViewPager2.isLayoutRtl
관련NullPointerException
비정상 종료가 수정되었습니다.- 이제
TOUCH_SLOP_PAGING
이 기본 터치 슬롭입니다. - 빈 어댑터의
OnPageChangeCallback
이벤트가 수정되었습니다.ViewPager1
과의 패리티를 위해 페이지가-1
이 아닌0
입니다.
알려진 문제
- Stable로 이동하기 전에 남아있는 미해결 문제 해결에 최선을 다하고 있습니다.
버전 1.0.0-alpha06
2019년 7월 2일
androidx.viewpager2:viewpager2:1.0.0-alpha06
이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
API를 정지하고 베타로 이동하기 전에 이것이 마지막으로 계획된 알파 버전입니다. API 의견을 보내주세요.
새로운 기능
- 개선된 접근성 기초:
ACTION_PAGE_RIGHT
,ACTION_PAGE_DOWN
등
API 변경사항
FragmentStateAdapter
: 기본 항목이 아닌Fragment
는STARTED
에 제한되고menuVisibility
는 false로 설정됩니다.PageTransformer
,MarginPageTransformer
,CompositePageTransformer
:position
문서가 수정되었습니다.
버그 수정
- 데이터 세트 변경/어댑터 변경 이후의
currentItem
이 수정되었습니다. offscreenPageLimit
관련MarginPageTransformer
문제가 수정되었습니다.FakeDrag
동작 과정의 접근성 작업이 수정되었습니다.
버전 1.0.0-alpha05
2019년 6월 5일
androidx.viewpager2:viewpager2:1.0.0-alpha05
가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
새로운 기능
RecyclerView
와 일관되게 동작하는ItemDecorator
가 도입되었습니다.- 페이지 사이에(페이지 인셋 외부에) 공간을 만드는 기능을 제공하도록
MarginPageTransformer
가 도입되었습니다. - 여러
PageTransformer
를 결합하는 기능을 제공하도록CompositePageTransformer
가 도입되었습니다.
API 변경사항
FragmentStateAdapter#getItem
메서드의 이름이FragmentStateAdapter#createFragment
로 변경되었습니다. 이전 메서드 이름은 과거 버그의 원인으로 드러났습니다.OFFSCREEN_PAGE_LIMIT_DEFAULT
값이0
에서-1
로 변경되었습니다.OFFSCREEN_PAGE_LIMIT_DEFAULT
상수를 사용하면 클라이언트 코드를 변경할 필요가 없습니다.
버그 수정
- 반대 방향으로 드래그하여
SCROLL_STATE_SETTLING
이 중단될 때의getCurrentItem()
동작이 수정되었습니다. - '활동 유지 안 함' 컨텍스트에서
FragmentStateAdapter
클래스 로더 문제가 해결되었습니다. setOffscreenPageLimit
문서가 개선되었습니다.
버전 1.0.0-alpha04
2019년 5월 7일
androidx.viewpager2:viewpager2:1.0.0-alpha04
이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
새로운 기능
offscreenPageLimit
: 뷰 계층 구조에 보관된 페이지View
/Fragment
수를 엄격히 제어할 수 있습니다.
API 변경사항
orientation
및isUserScrollable
속성이 더 이상SavedState
의 일부가 아닙니다.FragmentStateAdapter
의saveState
및restoreState
메서드가 완료되었습니다.ViewPager2.Orientation
및ViewPager2.ScrollState
주석이 비공개로 전환되었습니다.
버그 수정
SavedState
:Activity
가 제거되거나 다시 생성될 때 복원 문제가 수정되었습니다.SavedState
: 어댑터가 설정될 때까지 복원이 지연됩니다.OnPageChangeCallback
: 사소한 에지 케이스가 수정되었습니다.
버전 1.0.0-alpha03
2019년 4월 3일
androidx.viewpager2:viewpager2:1.0.0-alpha03
이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
새로운 기능
- 프로그래매틱 방식으로 ViewPager2를 스크롤하는 기능:
fakeDragBy(offsetPx)
API 변경사항
- 이제
FragmentStateAdapter
에는Lifecycle
객체가 필요합니다. 호스트FragmentActivity
또는 호스트Fragment
에서 객체를 얻을 수 있도록 유틸리티 생성자 두 개를 추가했습니다.
버그 수정
- 다양한
Fragment
지원 수정사항은 다음과 같습니다.- 최소화 과정 중에 또는 화면 회전 중에 데이터 세트 업데이트를 처리합니다.
- 회전 후 관련 없는 프래그먼트를 삭제합니다.
- 삭제된 항목의 저장 상태를 삭제합니다.
PageChangeCallback
: 여백이 있는 페이지의 페이지 오프셋 계산을 수정했습니다.
버전 1.0.0-alpha02
2019년 3월 13일
androidx.viewpager2:viewpager2:1.0.0-alpha02
이 출시되었습니다. 이 버전에 포함된 커밋의 전체 목록은 여기에서 확인할 수 있습니다.
새로운 기능
- 사용자 입력을 사용 중지하는 기능(
setUserInputEnabled
,isUserInputEnabled
)
API 변경사항
- 최종 ViewPager2 클래스
버그 수정
FragmentStateAdapter
안정성을 수정했습니다.
버전 1.0.0-alpha01
2019년 2월 7일
androidx.viewpager2:viewpager2 1.0.0-alpha01
이 출시되었습니다. 이 버전은 ViewPager2의 최초 출시입니다.
새로운 기능
- 이전
android.support.v4.view.ViewPager
(VP1)와의 차이점은 다음과 같습니다.- 오른쪽에서 왼쪽(RTL) 레이아웃 지원
- 수직 방향 지원
- 완전히 기능하는
notifyDataSetChanged
(VP1 버그 해결)
API 변경사항
FragmentStateAdapter
가FragmentStatePagerAdapter
를 대체합니다.RecyclerView.Adapter
가PagerAdapter
를 대체합니다.registerOnPageChangeCallback
이addPageChangeListener
를 대체합니다.
알려진 문제
- clipToPadding
- fakeDrag 없음
- JavaDoc
- 방향과 평행한 중첩된 스크롤
- 오프스크린 제한 제어 없음
- 더 나은 TabLayout 통합 필요
- pageWidth setter 없음(강제 100%/100%)
- 페이지 변환기: 하드웨어/소프트웨어 레이어 선택이 없음. 드로잉 역순서 없음
- 현재 이전의 페이지를 삽입할 때 현재 항목을 계속 표시
- 키보드 탐색 작업 필요
FragmentStateAdapter
안정성/성능 개선 예정