在开发LockPri2时, 需要用到一个浮动View在窗体中的坐标, 于是研究了下android UI的相关知识.
首先比较常用的是:
View.getTop()
View.getBottom()
View.getLeft()
View.getRight()
这几个方法都是获取到当前View在其父View中的相对位置坐标. 所以当View被嵌套多层时, 不太适用.
还有个方法是:
getGlobalVisibleRect(Rect r)
这个方法填充一个Rect r, 值的是这个UI子在整个屏幕上的坐标. 可以分别获取到top, left, right, bottom的值.
与之相对有一个方法
getLocalVisibleRect(Rect r)
则是获取当前View的显示区域的坐标, 默认左上角都是(0,0).
标题栏(ActionBar)的高度使用以下方法获取:
((MainActivity)mContext).getActionBar().getHeight();
而想获取状态栏高度则用:
Rect rect = new Rect();
((MainActivity)mContext).getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
他获取到的是程序实际显示区域的坐标(也就是除去状态栏的区域), rect.top的值既是状态栏的高度.