美文网首页Android
【Android】屏幕、坐标系、Padding、Margin(笔

【Android】屏幕、坐标系、Padding、Margin(笔

作者: Sraindy | 来源:发表于2019-08-08 13:36 被阅读0次

    来源
    [https://www.cnblogs.com/fuly550871915/p/4984815.html]
    [https://blog.csdn.net/rfgreeee/article/details/79087954]
    [https://www.jianshu.com/writer#/notebooks/22622795/notes/52109660/preview]
    (工匠若水)[https://blog.csdn.net/yanbober/article/details/50419117]

    屏幕

    image.png

    一、坐标系分类

    1、屏幕坐标系

    该坐标系是以屏幕的左上角为原点(0, 0), 水平向右代表 x 方向的正方向, 垂直向下代表 y方向的正方向。而触控事件中,使用getRawX()和getRawY()方法。获取的坐标就是以这个坐标系为标准下的坐标值。


    image.png
    2、布局坐标系:

    该坐标系是以 viewgroup 的左上角为坐标原点, 水平向右代表 x 方向的正方向, 垂直向下代表 y 方向的正方向,view 的坐标是在 layout 布局过程中做确定的。也就是view在viewgroup中的位置

    3、视图坐标系(相对于父容器)

    视图坐标系是以父视图的左上角为坐标原点的,它描述的是子视图在父视图中的位置。
    相应的原点向右为x轴正方向,原点向下为y轴正方向。在触控中,通过getX()和getY()来获取的坐标值就是视图坐标系中的坐标值。

    image.png

    获取坐标

    图中有三个黑色的框框,最外层的是手机屏幕,中间层的是ViewGroup,最内层的是ViewGroup中放置的view。


    image.png
    1、View提供的获取的坐标以及距离的方法(相对于父容器的坐标):
    View.getTop()            获取到的是view自身的顶边到其父布局顶边的距离
    View.getLeft()           获取到的是view自身的左边到其父布局左边的距离
    View.getRight()          获取到的是view自身的右边到其父布局左边的距离
    View.getBottom()         获取到的是view自身底边到其父布局顶边的距离
    这四个方法获取的坐标表示的是View原始状态时相对于父容器的坐标,对View进行平移操作并不会改变着四个方法的返回值。
    
    View.getX()              获取的是View左上角相对于父容器的坐标X
    View.getY()              获取的是View左上角相对于父容器的坐标Y
    View.getTranslationX()   View左上角相对于父容器的X偏移量 translationX = getX() - getLeft()  当View未发生平移操作时,translationX 与translationY都为0。
    View.getTranslationY()   View左上角相对于父容器的Y偏移量
    View.getLocationOnScreen(int[] position) 获取View相对于整个屏幕的坐标
    View.getLocationInWindow(int[] position) 获取View相对于Window的坐标(忽略状态栏及ActionBar)
    

    view
    又增加了一些关于 view 的属性(x, y): 标示 view 左上角的坐标, 其值为:x和y默认为0
    x = mleft + tranlationX
    y = mtop + tranlationY
    translationX, translationY: 表示 view 位置的偏移量(相对于原位置), 初始值为0
    该坐标系主要用在 view 的动画操作上面,这样可以控制view整个内容的偏移

    2、MotionEvent提供的方法(获取用户点击点坐标):
    getX()       获取点击事件距离当前View左边的距离,即视图坐标
    getY()       获取点击事件距离当前View顶边的距离,即视图坐标
    getRawX()    获取到的是点击事件距离整个屏幕左边的距离,即绝对坐标
    getRawY()    获取到的是点击事件距离整个屏幕顶边的距离,即绝对坐标
    
    image.png

    Padding和Margin

    来源
    [https://blog.csdn.net/jian_yun_rui/article/details/52959145 ]
    [https://www.jianshu.com/p/336f90f0026f?nomobile=yes ]

    image.png
    getPaddingLeft():  View里的content距离View左边缘的距离
    getPaddingTop():   View里的content距离View上边缘的距离
    getPaddingRight(): View里的content距离View右边缘的距离
    getPaddingBottom():View里的content距离View下边缘的距离
    
    image.png

    可以得到Content右上角M的坐标:
    X坐标:
    =View.getWidth() - View.getPaddingRight()
    =View.getPaddingLeft()+Content.width
    Y坐标:
    =View.getPaddingTop()
    =View.getHeight()-Content.height

    相关文章

      网友评论

        本文标题:【Android】屏幕、坐标系、Padding、Margin(笔

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