直接上代码:
fun View.addClickScale(scale: Float = 0.9f, duration: Long = 150) {
this.setOnTouchListener { _, event ->
when (event.action) {
MotionEvent.ACTION_DOWN -> {
this.animate().scaleX(scale).scaleY(scale).setDuration(duration)
.start()
}
MotionEvent.ACTION_UP -> {
this.animate().scaleX(1f).scaleY(1f).setDuration(duration).start()
this.performClick()
}
MotionEvent.ACTION_CANCEL -> {
this.animate().scaleX(1f).scaleY(1f).setDuration(duration).start()
}
}
true
}
}
这里需要注意有的控件有 MOVE 的效果,有的是 MOVE 同取消一致。具体情况具体分析。