美文网首页
View的坐标体系

View的坐标体系

作者: AndroidTony | 来源:发表于2017-11-08 11:31 被阅读84次
    view坐标.png

    Position

    1 getLeft(),getTop(),getRight(),getBottom()

    • getLeft()
      Left position of this view relative to its parent.
      view左边界相对于父布局左边界的像素个数;
    • getRight()
      view右边界相对于父布局左边界的像素个数;
      getRight() = getLeft()+getWidth();

    需要注意的是,View.getTop()、View.getLeft()、View.getBottom()、View.getRight()这四个方法获取的坐标表示的是View原始状态时相对于父容器的坐标,对View进行平移操作并不会改变着四个方法的返回值。

    2 getX(),getY()

    getX()与getY()方法获取的是View左上角相对于父容器的坐标,当View没有发生平移操作时,getX()==getLeft()、getY==getTop()。

    3 getTranslationX(),getTranslationY()

    translationX与 translationY是View左上角相对于父容器的偏移量:translationX = getX() - getLeft(),当View未发生平移操作时,translationX 与translationY都为0。

    4 View.getLocationOnScreen(int[] position);

    获取View相对于整个屏幕的坐标。

    5 View.getLocationInWindow(int[] position);

    获取View相对于Window的坐标(忽略状态栏及ActionBar)。

    Size

    • getMeasuredWidth() 与 getWidth()
      ①getMeasuredWidth方法获得的值是setMeasuredDimension方法设置的值,它的值在measure方法运行后就会确定。
      ②getWidth方法获得是layout方法中传递的四个参数中的mRight-mLeft,它的值是在layout方法运行后确定的。
      ③一般情况下在onLayout方法中使用getMeasuredWidth方法,而在除onLayout方法之外的地方用getWidth方法。

    Layout

    void layout (int l, int t, int r, int b)
    子View相对于父view的位置。

    注意:View的宽高是有top、left、right、bottom参数决定的。在View发生改变的过程中,top,left等值代表原始位置,是不会改变的。改变的只有X、Y,translationX、Y。

    触摸点MotionEvent的坐标:

    用户点击的坐标.png
    • event.getX():表示的是触摸的点距离控件左边界的距离。
    • event.getY():表示的是触摸的点距离控件上边界的距离。
    • event.getRawX:表示的是触摸点距离屏幕左边界的距离。
    • event.getRawY:表示的是触摸点距离屏幕上边界的距离。

    相关文章

      网友评论

          本文标题:View的坐标体系

          本文链接:https://www.haomeiwen.com/subject/isjemxtx.html