检查视图是否动画

fel*_*rce 0 android kotlin

我有一个扩展功能,可以让任何视图在单击时执行“缩放动画”,但此功能不检查视图是否正在设置动画。正因为如此,当用户多次点击(并且视图还没有完成动画)时,视图会缩放并增加视图的原始大小......

我需要防止这种情况。也许检查视图是否在动画,只有在视图没有动画时才动画

fun View.setOnClickWithScaleAnimListener(block: View.() -> Unit) {
    this.setOnClickListener { v ->
        v.animate()
            .scaleXBy(0.1f)
            .scaleYBy(0.1f)
            .setDuration(80)
            .withEndAction {
                v.animate()
                    .scaleXBy(-0.1f)
                    .scaleYBy(-0.1f)
                    .duration = 80
            }

        block(this)
    }
}
Run Code Online (Sandbox Code Playgroud)

Che*_*amp 5

当视图被点击时,在动画开始之前禁用它的“点击能力”。在所有动画结束时,恢复单击视图的能力。这实质上是在动画期间禁用侦听器而不必将其删除。

fun View.setOnClickWithScaleAnimListener(block: View.() -> Unit) {
    this.setOnClickListener { v ->
        v.animate()
            .scaleXBy(0.1f)
            .scaleYBy(0.1f)
            .setDuration(80)
            .withStartAction { v.isClickable = false }
            .withEndAction {
                v.animate()
                    .scaleXBy(-0.1f)
                    .scaleYBy(-0.1f)
                    .setDuration(80)
                    .withEndAction { v.isClickable = true }
            }
        block(this)
    }
}   
Run Code Online (Sandbox Code Playgroud)