Minor changes to tabs animator

This commit is contained in:
inorichi 2017-05-23 14:28:07 +02:00
parent dc5283ce9a
commit f521622d4d

View File

@ -2,7 +2,6 @@ package eu.kanade.tachiyomi.ui.main
import android.animation.ObjectAnimator import android.animation.ObjectAnimator
import android.support.design.widget.TabLayout import android.support.design.widget.TabLayout
import android.view.View
import android.view.ViewTreeObserver import android.view.ViewTreeObserver
import android.view.animation.DecelerateInterpolator import android.view.animation.DecelerateInterpolator
@ -29,7 +28,6 @@ class TabsAnimator(val tabs: TabLayout) {
} }
init { init {
isLastStateShown = tabs.visibility == View.VISIBLE
tabs.viewTreeObserver.addOnGlobalLayoutListener( tabs.viewTreeObserver.addOnGlobalLayoutListener(
object : ViewTreeObserver.OnGlobalLayoutListener { object : ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() { override fun onGlobalLayout() {
@ -39,7 +37,7 @@ class TabsAnimator(val tabs: TabLayout) {
// Save the tabs default height. // Save the tabs default height.
tabsHeight = tabs.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) { if (isLastStateShown) {
setHeight(tabsHeight) setHeight(tabsHeight)
} else { } else {
@ -73,9 +71,13 @@ class TabsAnimator(val tabs: TabLayout) {
* Expands the tab layout with an animation. * Expands the tab layout with an animation.
*/ */
fun expand() { fun expand() {
if (isMeasured && (!isLastStateShown || getHeight() != tabsHeight)) { if (isMeasured) {
animation.setIntValues(tabsHeight) if (getHeight() != tabsHeight) {
animation.start() animation.setIntValues(tabsHeight)
animation.start()
} else {
animation.cancel()
}
} }
isLastStateShown = true isLastStateShown = true
} }
@ -84,9 +86,13 @@ class TabsAnimator(val tabs: TabLayout) {
* Collapse the tab layout with an animation. * Collapse the tab layout with an animation.
*/ */
fun collapse() { fun collapse() {
if (isMeasured && (isLastStateShown || getHeight() != 0)) { if (isMeasured) {
animation.setIntValues(0) if (getHeight() != 0) {
animation.start() animation.setIntValues(0)
animation.start()
} else {
animation.cancel()
}
} }
isLastStateShown = false isLastStateShown = false
} }