fun View.zoomDo(scale: Float = 0.95f, duration: Long = 150, isEnable: Boolean = true) {//按鈕點(diǎn)擊縮放效果
var starttt = System.currentTimeMillis()
var chatt = System.currentTimeMillis()
this.setOnTouchListener { _, event ->
if (isEnable) {
when (event.action) {
MotionEvent.ACTION_DOWN -> {
starttt = System.currentTimeMillis()
this.animate().scaleX(scale).scaleY(scale).setDuration(duration).start()
}
MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
chatt = System.currentTimeMillis() - starttt
if (chatt > 140) {
this.animate().scaleX(1f).scaleY(1f).setDuration(duration).start()
}else{
afterUIDo((duration-chatt).toInt()) {
this.animate().scaleX(1f).scaleY(1f).setDuration(duration).start()
}
}
}
}
}
// 點(diǎn)擊事件處理,交給View自身
this.onTouchEvent(event)
}
}
v1.zoomDo()
方案解析
判斷手指點(diǎn)擊接觸時(shí)間,顯示完整縮放效果動(dòng)畫
因?yàn)槭荎otlin拓展,添加isEnable控制某些情況不出現(xiàn)點(diǎn)擊動(dòng)畫