Android 判断点击位置是否在控件内
- 1、拿到点击位置坐标
- 2、判断位置是否在控件内
- 完事
1、拿到点击位置坐标
/**
* 拦截点击事件
* @param ev
* @return
*/
override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
if (ev.action == MotionEvent.ACTION_DOWN) {
// 获取点击坐标
val x = ev.rawX.toInt()
val y = ev.rawY.toInt()
if (AppUtils.isTouchPointInView(view, x, y)) {
// 不再分发事件
return true
}
}
return super.dispatchTouchEvent(ev)
}
2、判断位置是否在控件内
/**
* (x,y)是否在view的区域内
*
* @param view
* @param x
* @param y
* @return
*/
fun isTouchPointInView(view: View, x: Int, y: Int): Boolean {
val location = IntArray(2)
view.getLocationOnScreen(location)
val left = location[0]
val top = location[1]
val right = left + view.measuredWidth
val bottom = top + view.measuredHeight
return y in top..bottom && x >= left && x <= right
}
完事