Android View体系总结
前言
Android View体系是界面编程的核心,他的重要性不亚于Android四大组件,View是Android中所有控件的基类,是一种界面层的控件的一种抽象,它代表了一个控件。
一、视图坐标系
1.Android坐标系的分类
Android 中的坐标系可以分为三类: 屏幕坐标系, 布局坐标系, 以及视图坐标系,这里我们详解视图坐标系。
所谓视图坐标系就是:该坐标系是在 view 绘制过程中, 绘制的内容将该坐标系作为参考, 来绘制 view.也就是内容在view里面的位置。
2.View中的方法
getTop():获取View自身顶边到其父布局顶边的距离
getLeft():获取View自身左边到其父布局左边的距离
getRight():获取View自身右边到其父布局左边的距离
getBottom():获取View自身底边到其父布局顶边的距离
以上方法得到的值都是 该view针对他所在父容器的坐标 (布局坐标系)
getHeight():获取View自身高度
getWidth():获取View自身宽度
view 又增加了一些关于 view 的属性
x, y: 标示 view 左上角的坐标, 其值为:x和y默认为0
x = mleft + tranlationX
y = mtop + tranlationY
translationX, translationY: 表示 view 位置的偏移量(相对于原位置), 初始值为0
该坐标系主要用在 view 的动画操作上面,这样可以控制view整个内容的偏移
3.MotionEvent当中的方法
getY(): 获取点击事件相对控件左边的x轴坐标,即点击事件距离控件左边的距离
getY():获取点击事件相对控件顶边的y轴坐标,即点击事件距离控件顶边的距离
getRawX():获取点击事件相对整个屏幕左边的x轴坐标,即点击事件距离整个屏幕左边的距离
getRawY():获取点击事件相对整个屏幕顶边的y轴坐标,即点击事件距离整个屏幕顶边的距离
二、实现View滑动的六种方法
1.通过Layout方法来实现滑动
在View绘制的时候,系统都会调用layout(int l, int t, int r, int b)方法来确定View的具体位置。系统既然是这样来设置View的位置的,那么我们也可以通过调用layout(int l, int t, int r, int b)`方法修改left,top,right,bottom这四个属性来控制View的位置。
当然使用 getX()、getY()方法和使用getRawX()、geRawtY()的效果是一样的,只不过前者使用的是相对位置,而后者使用的是绝对位置。
但是要注意,在使用绝对坐标系的时候,每次执行完 ACTION_MOVE的逻辑后,一定要重新设置初始坐标,这样才能获得准确的偏移量。
2.通过offsetLeftAndRight()与offsetTopAndBottom()来实现滑动
这两种方法和layout()方法效果方法差不多,具体案例参照:https://github.com/zq12119/ViewActiv