Merge pull request #4914 from vector-im/feature/adm/ftue-carousel-disable-automatic-transitions
Disabling automatic carousel transitions on user interaction
This commit is contained in:
commit
807ceb74ad
@ -80,17 +80,26 @@ class FtueAuthSplashCarouselFragment @Inject constructor(
|
|||||||
"Branch: ${BuildConfig.GIT_BRANCH_NAME}"
|
"Branch: ${BuildConfig.GIT_BRANCH_NAME}"
|
||||||
views.loginSplashVersion.debouncedClicks { navigator.openDebug(requireContext()) }
|
views.loginSplashVersion.debouncedClicks { navigator.openDebug(requireContext()) }
|
||||||
}
|
}
|
||||||
|
views.splashCarousel.registerAutomaticUntilInteractionTransitions()
|
||||||
|
}
|
||||||
|
|
||||||
views.splashCarousel.apply {
|
private fun ViewPager2.registerAutomaticUntilInteractionTransitions() {
|
||||||
var scheduledTransition: Job? = null
|
var scheduledTransition: Job? = null
|
||||||
registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
|
registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
|
||||||
override fun onPageSelected(position: Int) {
|
private var hasUserManuallyInteractedWithCarousel: Boolean = false
|
||||||
scheduledTransition?.cancel()
|
|
||||||
|
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
|
||||||
|
hasUserManuallyInteractedWithCarousel = !isFakeDragging
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onPageSelected(position: Int) {
|
||||||
|
scheduledTransition?.cancel()
|
||||||
|
// only schedule automatic transitions whilst the user has not interacted with the carousel
|
||||||
|
if (!hasUserManuallyInteractedWithCarousel) {
|
||||||
scheduledTransition = scheduleCarouselTransition()
|
scheduledTransition = scheduleCarouselTransition()
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
scheduledTransition = scheduleCarouselTransition()
|
})
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun ViewPager2.scheduleCarouselTransition(): Job {
|
private fun ViewPager2.scheduleCarouselTransition(): Job {
|
||||||
|
Loading…
Reference in New Issue
Block a user