Các Rect
được trả về chứa 4 giá trị:
bottom
xác định tọa độ y của đáy của hình chữ nhật. left
chỉ định tọa độ x của cạnh trái của hình chữ nhật. v.v.
Tọa độ gốc có nghĩa là giá trị hình chữ nhật nhấn được xác định trong hệ tọa độ của cha mẹ.
Hãy tưởng tượng mình đang đứng trong một cánh đồng mở vào ban đêm, nhìn lên mặt trăng. Vị trí của bạn trên trái đất có thể được diễn tả theo nhiều cách.
Nếu chúng tôi thể hiện vị trí của bạn trong hệ tọa độ địa phương, bạn sẽ được đặt tại (vĩ độ/kinh độ) (0, 0). Khi bạn đi bộ xung quanh, hệ thống tọa độ địa phương của bạn không bao giờ thay đổi, bạn luôn được đặt ở giữa (0,0) trong hệ tọa độ địa phương của bạn.
Tuy nhiên, nếu chúng tôi thể hiện vị trí của bạn bằng hệ tọa độ của trái đất, bạn có thể ở (vĩ độ, kinh độ) (16, 135).
Bạn đang đứng trên trái đất, vì vậy trái đất là hệ thống tọa độ gốc của bạn.
Trong cùng một cách, Chế độ xem có thể được chứa trong LinearLayout. LinearLayout sẽ là cha của View và do đó các giá trị từ getHitRect() sẽ được thể hiện trong hệ tọa độ của LinearLayout.
EDIT
Về generic hit hình chữ nhật là một thuật ngữ dùng để xác định một vùng hình chữ nhật được sử dụng để phát hiện va chạm. Trong điều khoản của Android, một hình chữ nhật hit chỉ là một thể hiện của loại Rect.
Các phương thức getLeft()
v.v. chỉ là những người truy cập dữ liệu trong Rect, vì vậy các thành viên của Rect xác định cùng một hình chữ nhật mà bạn sẽ nhận được bằng cách gọi các phương thức.
Một kịch bản sử dụng phổ biến cho một hình chữ nhật sẽ được xử lý tap sự kiện:
//Imagine you have some Rect named myRect
//And some tap event named event
//Check if the tap event was inside the rectangle
if(myRect.contains(event.getX(), event.getY()){
//it's a hit!
}
Bạn cũng có thể muốn xem nếu hai hình chữ nhật của cắt nhau
if(myRect.contains(myRect2)){
//collision!
}
Đối với một View, hình chữ nhật hit không thực sự được sử dụng trực tiếp, bạn có thể see the source. Trên cùng, dưới, bên trái, bên phải được sử dụng một tấn trong View nhưng phương thức getHitRect() thực sự thuận tiện hơn để truyền lại các tham số đó (trên/dưới/trái/phải) cho những người cần chúng trong một gói gọn gàng.
Cảm ơn, vui lòng xem chỉnh sửa của tôi. – JulianSymes
Cảm ơn bạn đã chỉnh sửa, nhưng tôi e là nó đặt ra câu hỏi một chút. Mã bạn trỏ đến chỉ ra rằng getHitRect() đôi khi trả về hình chữ nhật được xác định bởi getLeft(), getTop(), vv nhưng không phải lúc nào. Vậy sự khác biệt là gì? Những gì tôi đặc biệt yêu cầu là chính xác hình chữ nhật hàm trả về, trong các thuật ngữ ngữ nghĩa có ý nghĩa. Bạn sẽ đánh giá cao rằng chức năng có giá trị nhỏ mà không có câu trả lời chính xác. Tôi kết luận rằng khi tài liệu của hàm chỉ định không có hành vi thì không có hành vi nào được đảm bảo, vì vậy nó không hiệu quả. Tôi sẽ tránh nó. – JulianSymes