View系列(一)-View坐标参数

来源:互联网 发布:关羽看不起黄忠 知乎 编辑:程序博客网 时间:2024/06/06 01:18

View基础

View位置参数

位置是相对父容器而言。

left:View左上角相对父容器的X坐标
top:View左上角相对父容器的Y坐标
bottom:View右下角相对父容器的X坐标

获取四个左边:对应于View的mLeft等四个成员参数,通过getLeft()得到

android 3.0新增了四个参数:(View的左上角的X、Y坐标)X、Y、(View相对于父容器的平移)transictionX/Y,这四个参数也是相对父容器的

X:表示View左上角的X坐标
Y:表示View左上角的Y坐标

translationX:表示view相对于父容器X方向平移了多少,默认情况不指定translationX,偏移量为0,此时X=mLeft=getLeft()

translationY:和X相同

注意:如果指定View的translationX/Y参数,才是mLeft、mTop参数任然表示最初的左上角的坐标(不变),变的只是X/Y、translationX/Y值。此时X=translationX+mleft;

MotionEvent相关坐标

参考点:为屏幕左上角
getRowX():表示的事件(按下)的X坐标(该点相对于屏幕),此时是以屏幕左上角为原点
getRowY():表示的事件(按下)的Y坐标(该点相对于屏幕),此时是以屏幕左上角为原点

参考点:为View本身
getX():获取点击事件相对控件左边的x轴坐标,即点击事件距离控件左边的距离
getY():获取点击事件相对控件顶边的y轴坐标,即点击事件距离控件顶边的距离

动态获取View的坐标

获取整个View在屏幕中的坐标

  1. view.getLocationInWindow()

获取的封装View左上角(X、Y轴)的坐标,相对于当前Activity

(1)若是普通activity,则y坐标为可见的状态栏高度+可见的标题栏高度+view左上角到标题栏底部的距离.

(2)若是对话框式的activity,则y坐标为可见的标题栏高度+view到标题栏底部的距离.

2.view.getLocationOnScreen()

    int[] position = new int[2];      textview.getLocationOnScreen(position);

和上面的差不多,也是获取View的左上角坐标封装在一数组中,只是该坐标是相对于屏幕

3.view.getGlobalVisibleRect()

这个方法是构建一个Rect用来”套”这个view.此Rect的坐标是相对当前activity而言.

    Rect viewRect = new Rect();      textview.getGlobalVisibleRect(viewRect);
(1)若是普通activity,则Rect的top为可见的状态栏高度+可见的标题栏高度+Rect左上角到标题栏底部的距离.(2)若是对话框式的activity,则y坐标为Rect的top为可见的标题栏高度+Rect左上角到标题栏底部的距离.

4.view.getLocalVisibleRect()

Rect globeRect = new Rect();
button.getLocalVisibleRect(globeRect);

这个方法获得的Rect的top和left都是0,也就是说,仅仅能通过这个Rect得到View的宽度和高度.

以上方法在onCreat()调用,都会返回0,因为View还未加载完毕

0 0
原创粉丝点击