Android自定义View基础一 (Android坐标系)

《Android自定义View基础一 (Android坐标系)》 night_rain.png

作为一个APP,负责给用户展示和交互,既重要同时也是必要的!这些必要的东西就是一个个的View通过扩展、衍生来实现的。View就如同最原始的原子,通过我们的扩展和衍生,来实现展示和交互!

坐标系

既然要在屏幕上与用户交互,了解其坐标规则就是我们必须要做的第一件事,首先来看一张草图:

《Android自定义View基础一 (Android坐标系)》 屏幕坐标图

  • View自身坐标
    getLeft(); //获取自身左边到父布局左边的距离
    getTop(); //获取自身顶部到父布局顶部的距离
    getRight(); //获取自身右边到父布局左边的距离
    getBottom(); //获取自身底部到父布局顶部的距离

从而我们可以得出View的尺寸计算方式:(源码中提供了快捷方法)
widht = getRight()-getLeft();
height = getBottom()-getTop();

    @ViewDebug.ExportedProperty(category = "layout")
    public final int getWidth() {
        return mRight - mLeft;
    }
    @ViewDebug.ExportedProperty(category = "layout")
    public final int getHeight() {
        return mBottom - mTop;
    }

  • 触控点坐标
    getX(); //触控点距离控件左边的距离
    getY(); //触控点距离控件顶部的距离
    getRawX(); //触控点距离屏幕左边的距离
    getRawY(); //触控点距离屏幕顶部的距离

位置

我们看到界面上的控件,都是通过设置或者改变该View的位置来显示,接下来看看Android给我们提供改变View位置的API有哪些!

  • layout()
    通过改变该View距离父布局四周的距离来改变其位置

  • offsetLeftAndRight()
    设置该View在X周水平移动的距离

  • offsetTopAndBottomY()
    设置该View在Y周水平移动的距离

  • scrollTo()
    设置该View移动到一个具体的坐标点

  • scrollBy()
    设置一个坐标增量来实现View的移动。这里要注意的是接收值需要设置相反值!

点赞