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
    }

完事

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章