Tôi có chế độ xem tùy chỉnh nơi tôi sử dụng các phép biến đổi. Cho đến nay rất tốt, có chức năng như setRotationY()
, setScaleX()
, setTranslationY()
hoặc thậm chí getMatrix()
hoạt động như mong đợi, tôi có thể điều khiển chế độ xem của mình và nó hiển thị tốt. Nơi tôi nhấn tường là một số chức năng hoạt động lạ sau đó. Ví dụ chức năng như getHitRect()
trả lại giá trị hoàn toàn lạ! Điều này không giúp ích cho các sự kiện liên lạc của tôi.Cách nhận các giới hạn thích hợp của chế độ xem sau khi chuyển đổi Ma trận
Tôi đã cố gắng quá tải chức năng nhưng nó vẫn còn xa làm việc đặc biệt là khi sử dụng xoay hoặc mở rộng quy mô (Dịch làm việc tốt thông qua). Tôi nghĩ rằng đây là một cái gì đó để làm với thực tế là ma trận được thể hiện trong phối hợp con, vì vậy làm thế nào tôi có thể nhận được nó trong phối hợp cha mẹ?
@Override
public void getHitRect(Rect outRect){
RectF rect = new RectF();
rect.top = (float) this.getTop();
rect.bottom = (float) this.getBottom();
rect.left = (float) this.getLeft();
rect.right = (float) this.getRight();
this.getMatrix().mapRect(rect);
rect.round(outRect);
}
Tôi có thể nhận giá trị trực tiếp từ một số chức năng không? Giống như Chiều cao, Chiều rộng, trên cùng hoặc dưới cùng mới.
Cảm ơn câu trả lời của bạn, nó giúp tôi :) –
Một điều khác cho Android> = 4.0: 'getHitRect()' sẽ không tự động được gọi nếu bạn đang nhấp vào chế độ xem của bạn. Để thêm tính tương thích cho các dự án sử dụng SDK <4.0, sử dụng 'isTransformedTouchPointInView()' trên công việc của cha mẹ ngay cả khi nó không hoàn hảo. –