美文网首页Android自定义View系统知识
android自定义View——坐标系

android自定义View——坐标系

作者: 韩明泽 | 来源:发表于2019-02-08 13:06 被阅读39次

    在开发过程中有的时候我们会实现一些特殊功能,如组件滑动到一定距离隐藏或显示、图片置顶等等,这个时候view的坐标就派上了用场了;同样在自定义控件的时候,坐标系也是经常用到的,下面记录一下在复习过程中view坐标系的一些知识。

    目录

    • view的四个顶点坐标
    • view的x、y、translationX、translationY坐标
    • MotionEvent获取坐标
    图1

    1. view的四个顶点坐标

    view的位置主要由四个顶点坐标来决定,并且这个四个坐标都是相当坐标,view在移动过程中,它们的值不会发生变化。

    注:图1灰色部分为view相对于其父容器的四个顶点坐标

    四个顶点坐标分别为:

    getTop();       //获取子View左上角距父View顶部的距离
    getLeft();      //获取子View左上角距父View左侧的距离
    getBottom();    //获取子View右下角距父View顶部的距离
    getRight();     //获取子View右下角距父View左侧的距离
    

    view的宽高计算:

    //宽=right-left
    int width = getRight() - getLeft();
    //框架自带
    int width2 = getWidth();
    
    //高=bottom-top
    int height = getBottom() - getTop();
    int height2 = getHeight();
    

    2. view的x、y、translationX、translationY坐标

    图2

    android3.0之后为view增加了x、y、translationX、translationY坐参数(上面图2)。其中x、y为view左上角的坐标,translationX、translationY是view左上角相对于父容器的偏移量,它们默认值为0。

    //x、y的计算
    float x = getLeft() + getTranslationX();
    float x2 = getX();
    float y = getTop() + getTranslationY();
    float y2 = getY();
    

    3. MotionEvent获取坐标

    MotionEvent主要用于处理用户触摸屏幕后的交互。其获取的坐标信息如下:

    注:图1红色部分为MotionEvent获取的坐标信息

    //触摸点相对于其所在组件的相对坐标
    event.getX();      
    event.getY();
    //触摸点相对于屏的绝对坐标
    event.getRawX();    
    event.getRawY();
    

    相关文章

      网友评论

        本文标题:android自定义View——坐标系

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