(kotlin) registerOnPageCallback

박용석·2023년 8월 22일
0

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 중 하나)

상태변화에 알맞은 다양한 이벤트를 사용하는데 활용할 수 있을 것 같다.
다음에는 이 메서드를 활용하여 세 가지 상태에 적합한 실습을 진행해 봐야겠다.

profile
슬기로운 개발 활동

0개의 댓글