2011-08-26 49 views
6

Tôi đã làm việc trên Android một thời gian và muốn biết liệu có thể lấy lại vị trí của một nút trong Android hay không.Lấy tọa độ X & Y của một nút trong Android?

Mục tiêu của tôi là nhận tọa độ X & Y và in chúng trên LOGCAT.

Một số ví dụ để chỉ cho tôi cách được đánh giá cao.

Cảm ơn

Trả lời

9

Chắc chắn, bạn có thể nhận được những điều này, đảm bảo rằng các chế độ xem được vẽ ít nhất một lần trước khi bạn cố gắng nhận vị trí. Bạn có thể thử để có được vị trí trong onResume() và thử các chức năng này

view.getLocationInWindow() 
or 
view.getLocationOnScreen() 

hoặc nếu bạn cần một cái gì đó liên quan đến các phụ huynh, sử dụng

view.getLeft(), view.getTop() 

Liên kết để định nghĩa API:

+0

** getLocationInWindow (int []) ** và ** getLocationOnScreen (int []) ** có thông số. Bạn có chắc chắn về ý tưởng của bạn? – hakiko

+0

@hakkikonu hãy xem câu trả lời của tôi để hiểu cách sử dụng ** getLocationInWindow (int []) **. –

4

Giống như Azlam nói rằng bạn có thể sử dụng View.getLocationInWindow() để có được những tọa độ x, y.

Dưới đây là một ví dụ:

Button button = (Button) findViewById(R.id.yourButtonId); 
Point point = getPointOfView(button); 
Log.d(TAG, "view point x,y (" + point.x + ", " + point.y + ")"); 

private Point getPointOfView(View view) { 
    int[] location = new int[2]; 
    view.getLocationInWindow(location); 
    return new Point(location[0], location[1]); 
} 

Bonus - Để có được điểm trung tâm của quan điểm đưa ra:

Point centerPoint = getCenterPointOfView(button); 
Log.d(TAG, "view center point x,y (" + centerPoint.x + ", " + centerPoint.y + ")"); 

private Point getCenterPointOfView(View view) { 
    int[] location = new int[2]; 
    view.getLocationInWindow(location); 
    int x = location[0] + view.getWidth()/2; 
    int y = location[1] + view.getHeight()/2; 
    return new Point(x, y); 
} 

Tôi hy vọng ví dụ vẫn có thể có ích cho một ai đó.

0
buttonObj.getX(); 
buttonObj.getY(); 
Các vấn đề liên quan