作为一个APP,负责给用户展示和交互,既重要同时也是必要的!这些必要的东西就是一个个的View通过扩展、衍生来实现的。View就如同最原始的原子,通过我们的扩展和衍生,来实现展示和交互!
坐标系
既然要在屏幕上与用户交互,了解其坐标规则就是我们必须要做的第一件事,首先来看一张草图:
屏幕坐标图
- 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的移动。这里要注意的是接收值需要设置相反值!
网友评论