可通过三种方式实现View的滑动:
1、通过View本身提供的scrollTo/scrollBy方法来实现滑动
2、通过动画给View施加平移效果来实现滑动
3、通过改变View的LayoutParams使得View重新布局从而实现滑动
一、使用scrollTo/scrollBy
scrollBy实际上也是调用了scrollTo方法,实现了基于当前位置的相对滑动
scrollTo则实现了基于所传递参数的绝对滑动
在滑动过程中,mScrollX的值总是等于View左边缘和View内容左边缘在水平方向的距离,而mScrollY的值总是等于View上边缘和View内容上边缘在竖直方向的距离。
其中,view边缘指的是View的位置,由4个顶点组成,view内容边缘是指view中的内容边缘;scrollTo和scrollBy只能改变view内容的位置,不能改变view在布局中的位置。
mScrollX和mScrollY的单位为像素,并且当view的左边缘在view内容左边缘的右边时,mScrollX为正,反之为负值;当view的上边缘在view内容上边缘下边时,mScrollY为正,反之为负值。也就是说,从左向右滑动,mScrollX为负值,反之为正值;从上往下滑动,mScrollY为负值,反之为正值。
二、动画
使用动画移动view。主要操作view的translationX和translationY属性,既可以采用传统的view动画,也可以采用属性动画,如果使用属性动画的话,为了能够兼容3.0以下版本,需要采用开源动画库nineoldandroids;
view动画并不能真正的改变view的位置,属性动画可以。
三、改变布局参数
改变LayoutParams。
三种方式对比:
scrollTo/scrollBy:操作简单,适合对view内容滑动
动画:操作简单,主要适用于没有交互的view和实现复杂的动画效果
改变布局参数:操作稍微复杂,适用于有交互的view