only run 1 animation at once
This commit is contained in:
parent
16e7d1586d
commit
1c3ab835a6
|
@ -1,11 +1,11 @@
|
||||||
package com.vanced.manager.adapter
|
package com.vanced.manager.adapter
|
||||||
|
|
||||||
import android.animation.Animator
|
|
||||||
import android.animation.ValueAnimator
|
import android.animation.ValueAnimator
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
|
import androidx.core.animation.addListener
|
||||||
import androidx.core.view.isGone
|
import androidx.core.view.isGone
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.core.view.updateLayoutParams
|
import androidx.core.view.updateLayoutParams
|
||||||
|
@ -31,24 +31,10 @@ class ExpandableAppListAdapter(
|
||||||
|
|
||||||
private val isRoot = prefs.managerVariant == "root"
|
private val isRoot = prefs.managerVariant == "root"
|
||||||
|
|
||||||
inner class ListViewHolder(private val binding: ViewAppExpandableBinding) : RecyclerView.ViewHolder(binding.root) {
|
|
||||||
private var isExpanded = false
|
|
||||||
private var isAnimationRunning = false
|
private var isAnimationRunning = false
|
||||||
|
|
||||||
private val animationListener = object : Animator.AnimatorListener {
|
inner class ListViewHolder(private val binding: ViewAppExpandableBinding) : RecyclerView.ViewHolder(binding.root) {
|
||||||
override fun onAnimationStart(animation: Animator?) {
|
private var isExpanded = false
|
||||||
isAnimationRunning = true
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onAnimationEnd(animation: Animator?) {
|
|
||||||
isAnimationRunning = false
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onAnimationCancel(animation: Animator?) {}
|
|
||||||
|
|
||||||
override fun onAnimationRepeat(animation: Animator?) {}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fun bind(position: Int) {
|
fun bind(position: Int) {
|
||||||
val dataModel = dataModels[position]
|
val dataModel = dataModels[position]
|
||||||
|
@ -68,11 +54,11 @@ class ExpandableAppListAdapter(
|
||||||
when (isExpanded.also { isExpanded = !isExpanded }) {
|
when (isExpanded.also { isExpanded = !isExpanded }) {
|
||||||
true -> {
|
true -> {
|
||||||
appExpandedView.toggle(0f, 0.8f, -expandedTranslation)
|
appExpandedView.toggle(0f, 0.8f, -expandedTranslation)
|
||||||
root.toggleCard(rootHeight - expandedViewHeight, animationListener)
|
root.toggleCard(rootHeight - expandedViewHeight)
|
||||||
appExpandArrow.rotateArrow(90f)
|
appExpandArrow.rotateArrow(90f)
|
||||||
}
|
}
|
||||||
false -> {
|
false -> {
|
||||||
root.toggleCard(rootHeight + expandedViewHeight, animationListener)
|
root.toggleCard(rootHeight + expandedViewHeight)
|
||||||
appExpandedView.toggle(1f, 1f, expandedTranslation)
|
appExpandedView.toggle(1f, 1f, expandedTranslation)
|
||||||
appExpandArrow.rotateArrow(-90f)
|
appExpandArrow.rotateArrow(-90f)
|
||||||
}
|
}
|
||||||
|
@ -143,10 +129,7 @@ class ExpandableAppListAdapter(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun MaterialCardView.toggleCard(
|
private fun MaterialCardView.toggleCard(resultHeight: Int) {
|
||||||
resultHeight: Int,
|
|
||||||
listener: Animator.AnimatorListener
|
|
||||||
) {
|
|
||||||
ValueAnimator.ofInt(measuredHeight, resultHeight).apply {
|
ValueAnimator.ofInt(measuredHeight, resultHeight).apply {
|
||||||
duration = animationDuration
|
duration = animationDuration
|
||||||
addUpdateListener { value ->
|
addUpdateListener { value ->
|
||||||
|
@ -154,7 +137,14 @@ class ExpandableAppListAdapter(
|
||||||
height = value.animatedValue as Int
|
height = value.animatedValue as Int
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
addListener(listener)
|
addListener(
|
||||||
|
onStart = {
|
||||||
|
isAnimationRunning = true
|
||||||
|
},
|
||||||
|
onEnd = {
|
||||||
|
isAnimationRunning = false
|
||||||
|
}
|
||||||
|
)
|
||||||
}.start()
|
}.start()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue