**[我的博客](https://zhaozhenye.github.io/)**
view实现滑动的三种方式:
1:通过view本身的scrollTo scrollBy 实现
2:通过动画给view施加平移动画实现
3:通过改变view的layoutParams,重新布局,实现
一:使用scrollBy scrllTo
从源码中可以看到,scrollBy实际上调用了scrollTo, scrollBy是基本当前位置的相对滑动,scrollTo是相对于传入参数的绝对滑动。
这里需要理解view的两个变量 mScrollX 和 mScrollY
mScrollX :view的左边缘和view内容的做边缘的距离
mScrollY :view的上边缘和view内容的上边缘的距离
view的边缘指的是四个顶点的边缘
view内容边缘指的是view的内容的边缘
滑动的只是view的内容区域
记住:从左到右是负值,从右到左只正值
从上到下是负值,从下到上是正值
这个部分需要自己好好理解
二:使用动画
使用平移动画可以实现view的滑动
使用动画来实现view的滑动,主要是改变view的translationX 和 translationY属性
既可以使用view的动画,也可以使用属性动画。
参数介绍:
1:target: 目标view
2:属性:例如:translationX translationY
3:values:可变参数。
只有一个参数表示,view移动到的位置
只有两个参数:第一个参数表示开始位置,第二个参数表示结束位置
大于2个参数:一段时间内,移动的过程。
例如这个例子表示的就是,先向右平移200个像素,再基于原点向左移动200个像素,再回到原点。原点指的是view本身
使用属性动画的好处是:在平移前设置的点击事件,再平移后点击有效。如果使用view本身动画,不能实现这种效果。解决方式就是:通过平移后新建一个相同的view,通过显示隐藏实现移动后的点击效果。
三:改变布局参数
通过改变view的layoutParams参数实现平移,比如我们想让view向右平移100个像素,我们只需要给layoutParams的marginLeft设置成100就可以了。
总结:三种方式的优缺点
scrllTo scrllBy :操作简单,适合对view的内容进行移动
动画:适合动画效果多,并且没有用户交互
改变布局参数:操作较复杂,适合有用户交互的移动。
网友评论