[Android] ViewPager.addOnPageChangeListener
1 | loopViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { |
onPageSelected
- 페이지 인덱스가 변경되지 않는다면 이 메소드는 호출되지 않는다. (수동으로 스크롤 하다가 뗐을 때 재현가능)
- position: 스크롤 시 선택된 페이지의 인덱스
onPageScrolled
- 사용자의 터치 스크롤 & smooth 스크롤 시에 호출된다.
- position: 링크에 따르면, “SETTLE 상태에서는 대상 페이지가 넘어오고, DRAGGING 상태에서는 출발 페이지가 넘어온다”고 한다. 따라서 이를 활용하기는 어려울 것 같아 사용하지 않음.
- positionOffset: 0.0 ~ 1 사이의 값. 왼쪽으로 스크롤 시 1 -> 0.0으로 감소하며, 오른쪽으로 스크롤 시 0.0 -> 1로 증가한다.
onPageScrollStateChanged
- 페이지 인덱스가 변경될 경우, 변경되지 않을 경우 포함
- 상태가 변경될 경우 한 번씩 호출된다.
이벤트 전달 순서
- 수동으로 스크롤 시 페이지를 변경했을 때 순서 SCROLL_STATE_DRAGGING -> SCROLL_STATE_SETTLING -> onPageSelected SCROLL_STATE_IDLE
- loopViewPager.setCurrentItem으로 스크롤될 경우 순서 SCROLL_STATE_SETTLING -> onPageSelected -> SCROLL_STATE_IDLE
- 수동으로 스크롤 시 페이지를 변경하지 않았을 경우 순서 SCROLL_STATE_DRAGGING -> SCROLL_STATE_SETTLING -> SCROLL_STATE_IDLE
[Android] ViewPager.addOnPageChangeListener
https://dl137584.github.io/2022/02/11/015-viewpager-addonpagechangelistener/