Android按钮点击缩放效果

刚刚在做点击缩放的效果,虽然5、6年前就已经实现过一版了,但是技术的迭代更新,实现方案也进化了,相比之前(自定义View,不同类型的系统组件都要封装一次)简洁太多了,所以拿出来和大家分享下。

效果

TextView、Button、LinearLayout等等所有View的子类,都可以兼容。


addClickScale.gif

代码

关键部分
/**
 * 添加点击缩放效果
 */
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()
方案解析
  1. 监听OnTouchListener ,然后回调OnClickListener,这样满足了大部分场景下的需求。
  2. 由于使用了Kotlin的拓展函数,极大地减少了太多代码,支持所有类型的View。想象下,若是使用Java实现,则需要非常多的代码去封装各种类型的View,代码非常冗余。

Kotlin真香!

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值