/**
* 设置点击放大效果。
*/
fun setClickZoomEffect(view: View?) {
view?.setOnTouchListener(object : OnTouchListener {
var cancelled = false
var rect: Rect = Rect()
override fun onTouch(v: View, event: MotionEvent): Boolean {
when (event.action) {
MotionEvent.ACTION_DOWN -> scaleTo(v, 0.7f)
MotionEvent.ACTION_MOVE -> {
if (rect.isEmpty()) {
v.getDrawingRect(rect)
}
if (!rect.contains(event.x.toInt(), event.y.toInt())) {
scaleTo(v, 1f)
cancelled = true
}
}
MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
if (!cancelled) {
scaleTo(v, 1f)
} else {
cancelled = false
}
}
}
return false
}
})
}
/**
* 对view进行缩放。
*/
@SuppressLint("NewApi")
fun scaleTo(v: View, scale: Float) {
if (Build.VERSION.SDK_INT >= 11) {
v.scaleX = scale
v.scaleY = scale
} else {
var oldScale = 1f
if (v.getTag(Int.MIN_VALUE) != null) {
oldScale = v.getTag(Int.MIN_VALUE) as Float
}
val params: ViewGroup.LayoutParams = v.layoutParams
params.width = ((params.width / oldScale * scale).toInt())
params.height = ((params.height / oldScale * scale).toInt())
v.setTag(Int.MIN_VALUE, scale)
}
}
Android控件点击缩放
最新推荐文章于 2023-08-31 16:18:55 发布