View的事件体系(二)View的滑动

可通过三种方式实现View的滑动:

1、通过View本身提供的scrollTo/scrollBy方法来实现滑动

2、通过动画给View施加平移效果来实现滑动

3、通过改变View的LayoutParams使得View重新布局从而实现滑动

一、使用scrollTo/scrollBy

View的事件体系(二)View的滑动_第1张图片
源码

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的滑动_第2张图片
mScrollX和mScrollY的变换规律事例

二、动画

使用动画移动view。主要操作view的translationX和translationY属性,既可以采用传统的view动画,也可以采用属性动画,如果使用属性动画的话,为了能够兼容3.0以下版本,需要采用开源动画库nineoldandroids;

View的事件体系(二)View的滑动_第3张图片
传统的view动画
属性动画

view动画并不能真正的改变view的位置,属性动画可以。

三、改变布局参数

改变LayoutParams。

View的事件体系(二)View的滑动_第4张图片

三种方式对比:

scrollTo/scrollBy:操作简单,适合对view内容滑动

动画:操作简单,主要适用于没有交互的view和实现复杂的动画效果

改变布局参数:操作稍微复杂,适用于有交互的view


你可能感兴趣的:(View的事件体系(二)View的滑动)