From f521622d4d81c0d5d7dec9eaf1c341d2a861325f Mon Sep 17 00:00:00 2001 From: inorichi Date: Tue, 23 May 2017 14:28:07 +0200 Subject: [PATCH] Minor changes to tabs animator --- .../kanade/tachiyomi/ui/main/TabsAnimator.kt | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/TabsAnimator.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/TabsAnimator.kt index 165bb718b9..67195b882a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/TabsAnimator.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/TabsAnimator.kt @@ -2,7 +2,6 @@ package eu.kanade.tachiyomi.ui.main import android.animation.ObjectAnimator import android.support.design.widget.TabLayout -import android.view.View import android.view.ViewTreeObserver import android.view.animation.DecelerateInterpolator @@ -29,7 +28,6 @@ class TabsAnimator(val tabs: TabLayout) { } init { - isLastStateShown = tabs.visibility == View.VISIBLE tabs.viewTreeObserver.addOnGlobalLayoutListener( object : ViewTreeObserver.OnGlobalLayoutListener { override fun onGlobalLayout() { @@ -39,7 +37,7 @@ class TabsAnimator(val tabs: TabLayout) { // Save the tabs default height. tabsHeight = tabs.height - // Now that we know the height, set the initial height and visibility. + // Now that we know the height, set the initial height. if (isLastStateShown) { setHeight(tabsHeight) } else { @@ -73,9 +71,13 @@ class TabsAnimator(val tabs: TabLayout) { * Expands the tab layout with an animation. */ fun expand() { - if (isMeasured && (!isLastStateShown || getHeight() != tabsHeight)) { - animation.setIntValues(tabsHeight) - animation.start() + if (isMeasured) { + if (getHeight() != tabsHeight) { + animation.setIntValues(tabsHeight) + animation.start() + } else { + animation.cancel() + } } isLastStateShown = true } @@ -84,9 +86,13 @@ class TabsAnimator(val tabs: TabLayout) { * Collapse the tab layout with an animation. */ fun collapse() { - if (isMeasured && (isLastStateShown || getHeight() != 0)) { - animation.setIntValues(0) - animation.start() + if (isMeasured) { + if (getHeight() != 0) { + animation.setIntValues(0) + animation.start() + } else { + animation.cancel() + } } isLastStateShown = false }