美文网首页
View 坐标系

View 坐标系

作者: lotusve_w | 来源:发表于2020-04-06 15:31 被阅读0次

View的位置参数

View的位置参数主要由它的四个顶点来决定,它们分别对应View的四个属性:top、left、bottom、right。其中top是左上角纵坐标,left是左上角横坐标,bottom是右下角的纵坐标,right是右下角的横坐标。需要注意的是:这些坐标都是相对于View的父容器来说的,这是一种相对坐标。如图所示:

764825-20170119211536609-541825432.png

这张图非常清晰的表达了我们刚才表述的View相对位置的内容,我们可以很容易的知道View的宽度就是right-left的值,当然高度就是bottom-top。同时我们可以通过getLeft、getTop、getRight、getBottom来获取left、top、right、bottom的值。

注意:
  从Android 3.0开始,View额外添加了x、y、translationX、translationY。其中x和y是View左上角的坐标,translationX和translationY是View左上角相对于父容器的偏移量。这几个数值也是相对于父容器的坐标,并且translationX和translationY默认值都是0。这几个参数的换算关系如下:
  1、x=left+translationX;
  2、y=top+translationY;
  主要注意的是:View在移动过程中,top和left表示的是原始左上角的位置信息,其值不会发生改变。此时发生改变的是x、y、translationX、translationY。
  1、view.getTranslationX计算的是该view的偏移量。初始值为0,向左偏移值为负,向右偏移值为正。
  2、view.getX相当于该view距离父容器左边缘的距离,等于getLeft+getTranslationX。

如图所示:


764825-20170119213934359-775850732.png

我们看到左侧的图片是初始情况下的。这时候translationX和translationY都是0。第二张图我们将View向右侧移动X个位置,我们通过上面的分析知道left、top的值都没有改变。改变的是translationX。

再谈谈rawX

rawX是绝对坐标,是相对于屏幕左上角的横坐标,view本身没有getRawX的方法,这个方法一般在MotionEvent对象里使用。

如图所示:

764825-20170120100053531-1937595394.png

最后总结:

View获取自身宽高
getHeight():获取View自身高度
getWidth():获取View自身宽度

View自身坐标
通过如下方法可以获得View到其父控件(ViewGroup)的距离:
getTop():获取View自身顶边到其父布局顶边的距离
getLeft():获取View自身左边到其父布局左边的距离
getRight():获取View自身右边到其父布局左边的距离
getBottom():获取View自身底边到其父布局顶边的距离

MotionEvent提供的方法
我们看上图那个深蓝色的点,假设就是我们触摸的点,我们知道无论是View还是ViewGroup,最终的点击事件都会由onTouchEvent(MotionEvent event)方法来处理,MotionEvent也提供了各种获取焦点坐标的方法:

getX():获取点击事件距离控件左边的距离,即视图坐标
getY():获取点击事件距离控件顶边的距离,即视图坐标
getRawX():获取点击事件距离整个屏幕左边距离,即绝对坐标
getRawY():获取点击事件距离整个屏幕顶边的的距离,即绝对坐标

原文

相关文章

  • Android的View坐标系

    Android坐标系: View视图坐标系:

  • ★60.自定义控件 ★01.基础

    View坐标系 简介 子View的坐标系统是相对于父View而言的. 示意图 代码 Event坐标系 示意图 代码...

  • View坐标

    View事件体系 1、Android坐标系 屏幕区域划分 屏幕坐标系 2、View位置详解 View视图结构 对于...

  • Android Scroller分析

    (1)Android view的直角坐标系 需要注意的是,view的直角坐标系和数学的直角坐标系不同,view的x...

  • 关于android中的getX,getY,getRawX,get

    总结: view下的方法: getX(): 该view坐标系中,x坐标值 getY():该view坐标系中,y坐标...

  • frame和bounds的区别

    frame: 该view在父view坐标系统中的位置和大小。(参照点是,父亲的坐标系统) bounds:该view...

  • iOS View的Frame和bounds深入探究

    frame: 该view在父view坐标系统中的位置和大小。(参照点是,父亲的坐标系统) bounds:该view...

  • UIview+ UIWindow的总结

    frame: 该view在父view坐标系统中的位置和大小。(参照点是,父亲的坐标系统)bounds:该view在...

  • bounds 和frame 的区别

    frame: 该view在父view坐标系统中的位置和大小。(参照点是,父亲的坐标系统) bounds:该view...

  • iOS view 的frame和bounds的区别

    frame: 该view在父view坐标系统中的位置和大小。(参照点是,父亲的坐标系统) bounds:该view...

网友评论

      本文标题:View 坐标系

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