在Android中,要獲取一個View的位置,可以使用以下方法:
getLocationOnScreen()
或getLocationInWindow()
方法。這兩個方法都會返回一個包含x和y坐標的int數組。int[] location = new int[2];
view.getLocationOnScreen(location); // 或者使用 view.getLocationInWindow(location);
int x = location[0];
int y = location[1];
getLocationOnScreen()
方法返回的是View在整個屏幕上的位置,而getLocationInWindow()
方法返回的是View在當前窗口(Window)中的位置。
ViewTreeObserver
。你可以為View設置一個全局布局監聽器,然后在回調方法中獲取View的位置。view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int[] location = new int[2];
view.getLocationOnScreen(location); // 或者使用 view.getLocationInWindow(location);
int x = location[0];
int y = location[1];
// 移除監聽器,避免重復調用
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
}
});
請注意,這種方法可能會在View布局完成時多次調用。因此,在獲取到位置信息后,建議移除監聽器以避免不必要的性能開銷。