Tôi đã làm việc trên một ứng dụng nhỏ rất đơn giản bằng cách sử dụng chế độ xem mở rộng. Vấn đề là tôi không thể tìm thấy những gì được nhấn trong onTouchEvent của tôi. Tôi đã hiểu rằng tôi đã so sánh các điểm áp lực (x và y) với các phần tử và xem nó có thể là gì.Đăng ký nếu được nhấn bên trong rectF trong onTouchEvent
Nhưng ... Tôi đã tuyên bố một hình chữ nhật sử dụng:
Paint color= new Paint();
color.setColor(Color.BLACK);
rectF = new RectF(0.0f, 0.0f, 1.0f, 0.5f) ;
canvas.drawRect(rectF, color);
Cho đến nay rất tốt, nhưng trong onTouchEvent chức năng
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 ;
}
tôi đặt rectF với một số loại tương đối điểm khác nhau, từ 0-1, nhưng X và Y tôi nhận được từ các sự kiện từ 0 trở lên tùy thuộc vào kích thước màn hình.
Tôi có thể dễ dàng chuyển đổi một trong hai giá trị không?
Sửa
tưởng ai đó quan tâm đến giải pháp cuối cùng ...
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 ;
}
tôi thấy rằng tôi chứ không phải muốn chiều rộng và chiều cao của tầm nhìn, vì vậy tôi đã sử dụng 'this.getHeight()' và 'this.getWidth()' này. – dubbe
@ dubbe chắc chắn, tôi đã không nhận thức được bối cảnh của bạn, vì vậy tôi đã đưa ra lời khuyên về trường hợp đơn giản nhất – kostja
Tôi biết, và đó là lời khuyên hoàn hảo, tôi chỉ làm rõ nó trong trường hợp ai đó đang tìm kiếm cùng một thứ! – dubbe