Android 判断点击位置是否在控件内

Android 判断点击位置是否在控件内

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
    }

完事

发布了103 篇原创文章 · 获赞 31 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/sinat_38184748/article/details/103727489