Android View的滑动方式
自定义View是安卓进阶的基础,是安卓开发者不得不学习的知识点,而酷炫的自定义View效果也是离不开View的滑动。我们来了解View是如何实现滑动的。
View坐标系基础知识
View的位置主要它的四个顶点来决定,分别对应于View的四个属性。top,left,right,bottom。其中top是左上角纵坐标,left是左上角横坐标,right是右下角横坐标,bottom是右下角纵坐标。
但这些坐标都是相对于父View的。
除了上面确定View位置的参数,还有x,y,translationX,translationY这四个参数,x,y代表View的左上角的坐标值,而translationX,translationY是左上角坐标相对于父View的偏移量,默认为0,也就是View不移动,则x,y等于left和top。在View的滑动过程中,left和top表示的是View原始位置的值,这是不会改变的。
Android View的滑动方式
1 layout方法改变View位置滑动View
首先我们来看看layout方法源码
onLayout是View绘制过程中的一个方法,可以通过它确定View的位置,也就是说通过layout方法可以改变View的位置,
这样就能实现跟手滑动,可以去前后打印left,top,right,bottom数值,发现前后是变化的了的,改变的不只是内容。
offsetLeftAndRight和offsetTopAndBottom方法改变View的位置让其滑动。
效果也是一样的,这两个方法也是真实地改变了View的位置而不是View的内容。
使用ScrollTo()和ScrollBy()滑动View
这两这个方法是View提供的滑动方法,前者是移动到某个点,后者是根据传入的偏移量进行移动。先看源码实现:
这里有个mScrollX规则我们可以这么理解:
View的左边缘在View内容的左边缘左边时,mScrollX为负,反之为正。
View的上边缘在View内容的上边缘上边时,mScrollY为负,反之为正。
也是效果一样的达到。