我有一个函数可以在 ACTION_DOWN
时缩小 View 的大小,并在 ACTION_UP
时将其恢复为原始大小。此功能完全是为了美观。我在按钮上设置了 setOnClickListeners,因此它们可以(理论上...)在按下按钮时执行代码。
private fun scaleButton(theButton:View, grow:Boolean){
theButton.setOnTouchListener(View.OnTouchListener { v, event ->
if (event.action == MotionEvent.ACTION_DOWN) {
v.isPressed = true
if (grow) {
v.animate().scaleX(1.04F).scaleY(1.04F).setDuration(50)
} else {
v.animate().scaleX(0.97F).scaleY(0.97F).setDuration(50)
}
} else if (event.action == MotionEvent.ACTION_UP) {
v.isPressed = false
v.animate().scaleX(1.0F).scaleY(1.0F).setDuration(100)
}
false
})
}
问题是 setOnClickListener
从未被调用。
创建时:
scaleButton(button1,false)
scaleButton(button2,true)
scaleButton(button3,false)
button1.setOnClickListener {
println("Button 1 Pressed")
}
button2.setOnClickListener {
println("Button 2 Pressed")
}
button3.setOnClickListener {
println("Button 3 Pressed")
}
如何通过动画(触摸)缩放按钮并触发 setOnClickListener
最佳答案
您的点击监听器永远不会触发,因为触摸监听器应该在元素被点击时通知系统。你的不是。要么在适当的时候添加一个 performClick,要么将所有内容都放入触摸监听器中并执行 action_up 上的点击
关于android - 在按钮上同时使用 setOnTouchListener 和 setOnClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56265376/