Я нашел другой способ, и я думаю, что это лучший способ обнаружить касание для любого вида, используя Rect
Я только что создал метод, который возвращает экземпляр Rect, включающий все четыре координаты представления
private Rect getLocationOnScreen(View mView) {
Rect mRect = new Rect();
int[] location = new int[2];
mView.getLocationOnScreen(location);
mRect.left = location[0];
mRect.top = location[1];
mRect.right = location[0] + mView.getWidth();
mRect.bottom = location[1] + mView.getHeight();
return mRect;
}
А затем просто переопределите onTouchEvent(MotionEvent event)
в своей Активности и проверьте координаты любого вида, который вы хотите обнаружить, касался или нет,
@Override
public boolean onTouchEvent(MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
if (event.getAction() == MotionEvent.ACTION_DOWN &&
getLocationOnScreen(imageview).contains(x, y)) {
Toast.makeText(getApplicationContext(),
"ImageView Touched", Toast.LENGTH_LONG).show();
}
return super.onTouchEvent(event);
}