ViewPager2의 페이지 변경 리스너를 사용하는 방법을 알아보자
ViewPager2에는 registerOnPageChangeCallback 메서드를 사용하여
페이지 변경이벤트를 캐치할 수 있다.
import androidx.viewpager2.widget.ViewPager2
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = MainActivityBinding.inflate(layoutInflater)
setContentView(binding.root)
initView()
// ViewPager2의 페이지 변경 리스너 등록
binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
}
override fun onPageSelected(position: Int) {
}
override fun onPageScrollStateChanged(state: Int) {
}
})
}
}
onPageScrolled()
페이지 스크롤 중 호출을 하는 경우에 사용한다.
position: 현재 페이지의 인덱스
positionOffset: 페이지 스크롤의 비율 (0.0부터 1.0까지)
positionOffsetPixels: 픽셀 단위의 페이지 스크롤 오프셋
onPageSelected()
새로운 페이지가 선택되어 호출하는 경우에 사용한다.
position: 선택된 페이지의 인덱스
onPageScrollStateChanged()
페이지 스크롤 상태가 변경될 때 호출
state: 스크롤 상태를 나타내는 정수 값 (ViewPager2.SCROLL_STATE_IDLE, ViewPager2.SCROLL_STATE_DRAGGING, ViewPager2.SCROLL_STATE_SETTLING 중 하나)
상태변화에 알맞은 다양한 이벤트를 사용하는데 활용할 수 있을 것 같다.
다음에는 이 메서드를 활용하여 세 가지 상태에 적합한 실습을 진행해 봐야겠다.