kako.dev

開発、自作アプリのこと

ViewPagerのページ切り替え時に処理する

ViewPagerのページ切り替え時に何か処理をしたい時はOnPageChangeListenerを使います。 OnPageChangeListenerを定義して、ViewPager.addOnPageChangeListenerにセットしてあげるだけで出来ます。

class MainFragment : Fragment() {
    private val pageChangeListener = object : ViewPager.OnPageChangeListener {
        override fun onPageScrollStateChanged(state: Int) {}

        override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {}

        // ページ切り替え時
        override fun onPageSelected(position: Int) {
            // ここに処理かく
        }
    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        
        pager.addOnPageChangeListener(pageChangeListener)
    }
}

利用シーンとして私の環境では、

  • ViewPagerの内動画をコンテンツとして持つページがあるとして、他のページから遷移または他のページに遷移したときに、再生・停止するとき
  • 他のページから移動してきたとき画面をAPIをコールするとき

などで役に立ちました。