Я работал над очень простым небольшим приложением, используя расширенный вид.
Проблема в том, что я не могу найти то, что было нажато в моем onTouchEvent.
Я понял, что должен сравнить точки давления (x и y) с элементами и посмотреть, какой это может быть.
Но ...
Я объявил прямоугольник, используя:
Paint color= new Paint();
color.setColor(Color.BLACK);
rectF = new RectF(0.0f, 0.0f, 1.0f, 0.5f) ;
canvas.drawRect(rectF, color);
Пока все хорошо, но в функции onTouchEvent
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction() ;
float x = event.getX() ;
float y = event.getY() ;
switch(action) {
case MotionEvent.ACTION_DOWN:
if(rectF().contains(x, y)) {
// Something should happen
}
}
invalidate();
return true ;
}
Я установил rectF с какими-то относительными точками в диапазоне от 0 до 1, но X и Y, которые я получаю от события, варьируются от 0 и выше в зависимости от размера экрана.
Можно ли легко преобразовать любое из значений?
Редактировать
Думал, кто-то заинтересован в окончательном решении ...
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction() ;
float x = event.getX() ;
float y = event.getY() ;
int width = this.getWidth() ;
int height = this.getHeight() ;
switch(action) {
case MotionEvent.ACTION_DOWN:
if(rectF().contains(x/width, y/height)) {
// Something should happen
}
}
return true ;
}