1.获取相对于父ViewGroup的坐标:
getLeft , getTop, getBottom, getRight
2.获取相对于窗口的坐标:
getLocationInWindow
用绘制区域的outRect.top - 应用区域的outRect.top 即是标题栏的高度。
注意: 如果刚启动Activity时就要计算这些数据,最好在 onWindowFocusChanged 函数中进行, 否则得到的某些数据可能是错误的,比如,应用区域高宽的获取。
getLeft , getTop, getBottom, getRight
2.获取相对于窗口的坐标:
getLocationInWindow
int[] position = new int[2];
textview.getLocationInWindow(position);
System.out.println("getLocationInWindow:" + position[0] + "," + position[1]); 3.获取相对于屏幕的坐标:
getLocationOnScreen
int[] position = new int[2];
textview.getLocationOnScreen(position);
System.out.println("getLocationOnScreen:" + position[0] + "," + position[1]);
理解图:
4.获取:屏幕高度、状态栏高度、标题栏高度
屏幕区域的获取:
activity.getWindowManager().getDefaultDisplay();
应用区域的获取:
Rect outRect = new Rect();
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(outRect);
view绘制区域获取:
Rect outRect = new Rect();
activity.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getDrawingRect(outRect);
用绘制区域的outRect.top - 应用区域的outRect.top 即是标题栏的高度。
注意: 如果刚启动Activity时就要计算这些数据,最好在 onWindowFocusChanged 函数中进行, 否则得到的某些数据可能是错误的,比如,应用区域高宽的获取。
本文详细介绍了如何在Android应用中获取View相对于父View、窗口和屏幕的坐标,以及如何获取屏幕高度、状态栏高度和标题栏高度。通过使用`getLocationInWindow()`和`getLocationOnScreen()`方法,开发者可以轻松实现对View位置的精确控制和布局调整。此外,文章还提供了获取屏幕区域的方法,包括应用区域和视图绘制区域,以便更精确地定位和布局UI元素。

1001

被折叠的 条评论
为什么被折叠?



