我有一个扩展功能,可以让任何视图在单击时执行“缩放动画”,但此功能不检查视图是否正在设置动画。正因为如此,当用户多次点击(并且视图还没有完成动画)时,视图会缩放并增加视图的原始大小......
我需要防止这种情况。也许检查视图是否在动画,只有在视图没有动画时才动画
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)
当视图被点击时,在动画开始之前禁用它的“点击能力”。在所有动画结束时,恢复单击视图的能力。这实质上是在动画期间禁用侦听器而不必将其删除。
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)
| 归档时间: |
|
| 查看次数: |
1643 次 |
| 最近记录: |