From 46a143e4ac16abea8e93d5b5c2822edf03c36fb2 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 29 Dec 2017 22:07:47 +0100 Subject: [PATCH] couple slideshow improvements --- .../gallery/activities/ViewPagerActivity.kt | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt index 7533f5495..84fd594f8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/ViewPagerActivity.kt @@ -317,6 +317,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View view_pager.apply { adapter = pagerAdapter currentItem = mPos + removeOnPageChangeListener(this@ViewPagerActivity) addOnPageChangeListener(this@ViewPagerActivity) } } @@ -351,10 +352,16 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } override fun onAnimationEnd(animation: Animator?) { - view_pager.endFakeDrag() + if (view_pager.isFakeDragging) { + try { + view_pager.endFakeDrag() + } catch (ignored: Exception) { + stopSlideshow() + } - if (view_pager.currentItem == oldPosition) { - slideshowEnded(forward) + if (view_pager.currentItem == oldPosition) { + slideshowEnded(forward) + } } } @@ -374,7 +381,11 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View val dragPosition = animation.animatedValue as Int val dragOffset = dragPosition - oldDragPosition oldDragPosition = dragPosition - view_pager.fakeDragBy(dragOffset * (if (forward) 1f else -1f)) + try { + view_pager.fakeDragBy(dragOffset * (if (forward) 1f else -1f)) + } catch (e: Exception) { + stopSlideshow() + } } } }) @@ -399,8 +410,8 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View private fun stopSlideshow() { if (mIsSlideshowActive) { - showSystemUI() mIsSlideshowActive = false + showSystemUI() mSlideshowHandler.removeCallbacksAndMessages(null) window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) }