哥的E文不是很好,所以这里的翻译是根据自己使用后的理解来写的,跟原文有很多的出入。
1.概述
Scroller封装了滚动效果, 持续滚动的时间可以是默认的时间(在fling函数里可以找到默认时间mDuration = (int) (1000.0 * Math.exp(l / (DECELERATION_RATE - 1.0)));)也可以通过使用startScroll函数自己指定(最后一个变量指定持续时间 startScroll(int startX, int startY, int dx, int dy, int duration),经过这段时间后滚动完,computeScrollOffset()函数会返回false表示滚动结束。
将Scroll使用到自己的对象时需要不停的调用computeScrollOffset()函数,以便更新对象的新坐标。
例如在线程里不断更新对象坐标,如下面
run(){ if(scroller.computeScrollOffset()) { obj.x=scroller.getCurrX(); obj.y=scroller.getCurrY(); } }2.构造函数
Scroller(Context context)
创建一个默认持续时间和动画插入器的Scroller。
Scroller(Context context, Interpolator interpolator)
指定interpolator 创建一个Scroll,如果interpolator为null,将使用默认的interpolator.
3.公共函数
abortAnimation();//停止动画。
computeScrollOffset();//当你想知道新坐标时调用。如果返回true,动画还没有完成,坐标将被更新为新坐标,如果返回false,代表动画完成。
extendDuration(int extend);//延长scroller动画时间。当你使用setFinalX(int newX)或者setFinalY(int newY)时,允许运行动画滚动更长和跟远。
fling (int startX, int startY, int velocityX, int velocityY, int minX, int maxX, int minY, int maxY);//基于fling手势开始滚动,滚动距离取决于fling的初始速度。
startX: 开始滚动的x坐标;
startY: 开始滚动的y坐标;
velocityX: fling手势x轴的初速度,以每秒像素计算;
velocityY: fling手势y轴的初速度,以每秒像素计算;
minX: x轴的最小值,scroller不会超过这个值;
maxX: x轴的最大值,scroller不会超过这个值;
minY: y轴的最小值,scroller不会超过这个值;
maxY: y轴的最大值,scroller不会超过这个值;
forceFinished(boolean finished);//强制停止动画。
getCurrVelocity();//返回当前速度。
getCurrX();//返回当前x坐标。
getCurrY();//返回当前y坐标。
getDuration();//返回滚动的持续时间,以毫秒为单位
getFinalX();//返回结束滚动的x坐标
getFinalY();//返回结束滚动的y坐标。
getStartX();//返回开始滚动的x坐标。
getStartY();//返回开始滚动的y坐标。
isFinished();//返回Scroller是否已经完成滚动。
setFinalX(int newX);//设置x轴的最终位置。
setFinalY(int newY);//设置y轴的最终位置。
setFriction(float frictioin);//设置摩擦力。
startScroll(int startX, int startY, int dx, int dy);//根据提供的开始点跟滚动距离开始滚动。滚动将使用默认值250毫秒作为持续时间。
startX: 开始水平方向的偏移值,以像素为单位,正值表示内容向左。
startY: 开始垂直方向的偏移值,以像素为单位,正值表示内容向上。
dx: 水平方向的滚动距离,正值表示内容向左滚动。
dy: 垂直方向的滚动距离,正值表示内容向上滚动。
startScroll(int startX, int startY, int dx, int dy, int duration);//根据提供的开始点跟滚动距离开始滚动。
startX: 开始水平方向的偏移值,以像素为单位,正值表示内容向左。
startY: 开始垂直方向的偏移值,以像素为单位,正值表示内容向上。
dx: 水平方向的滚动距离,正值表示内容向左滚动。
dy: 垂直方向的滚动距离,正值表示内容向上滚动。
duration: 滚动持续时间,单位为毫秒。
timePassed();//返回自开始滚动以来的过去时间。单位是毫秒。