剛剛在做點擊縮放的效果,雖然5、6年前就已經(jīng)實現(xiàn)過一版了,但是技術(shù)的迭代更新,實現(xiàn)方案也進化了,相比之前簡潔太多了,所以拿出來和大家分享下。
效果
TextView、Button、LinearLayout等等所有View的子類,都可以兼容。

addClickScale.gif
代碼
關(guān)鍵部分
/**
* 添加點擊縮放效果
*/
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, MotionEvent.ACTION_CANCEL -> {
this.animate().scaleX(1f).scaleY(1f).setDuration(duration).start()
}
}
// 點擊事件處理,交給View自身
this.onTouchEvent(event)
}
}
使用
btn.addClickScale()
方案解析
- 監(jiān)聽OnTouchListener ,然后回調(diào)OnClickListener,這樣滿足了大部分場景下的需求。
- 由于使用了Kotlin的拓展函數(shù),極大地減少了太多代碼,支持所有類型的View。
Kotlin真香!