getLocalVisibleRect, 返回一个填充的Rect对象, 感觉是这个View的Rect大小,left,top取到的都是0
getGlobalVisibleRect, 获取全局坐标系的一个视图区域, 返回一个填充的Rect对象;该Rect是基于总整个屏幕的
getLocationOnScreen,计算该视图在全局坐标系中的x,y值,(注意这个值是要从屏幕顶端算起,也就是索包括了通知栏的高度)//获取在当前屏幕内的绝对坐标
getLocationInWindow,计算该视图在它所在的widnow的坐标x,y值,//获取在整个窗口内的绝对坐标 (不是很理解= =、)
getLeft,getTop,getBottom,getRight, 这一组是获取相对在它父亲里的坐标
通过View提供的方法获取高度方式有两种:
1, 当前显示的view中直接获取当前view高宽
2, 通过Activity的getWindow().findViewById(Window.ID_ANDROID_CONTENT)获取系统当前显示的view根(是一个framelayout对象),android绘制会将要绘制的view放置在framelayout中绘制。
Display对象获取屏幕高宽 :
获取display对象 Activity中getWindowManager().getDefaultDisplay()
getWidth() 返回显示界面宽度即屏幕宽度
getHeight() 返回显示界面高度即屏幕高度
由display对象设置DisplayMetrics高宽值,通过DisplayMetrics对象获取屏幕高宽,有点多此一举:
getWidth() 返回显示界面宽度即屏幕宽度
getHeight() 返回显示界面高度即屏幕高度
常用一些值计算:
屏幕高宽
Canvas对象 、display对象和DisplayMetrics可获取屏幕的高宽
状态栏高度
View的getWindowVisibleDisplayFrame(Rect outRect)附值outRect后,outRect.top()即是状态栏高度
标题高度
View的getWindowVisibleDisplayFrame(Rect outRect1)附值outRect后,outRect.height()-view.getheight()即是标题高度
**注**:如果在Activity的OnCreate()事件输出那些参数,是全为0,要等UI控件都加载完了才能获取到这些
example:
int[] location = new int[2];
v.getLocationOnScreen(location);
int x = location[0];
int y = location[1];