上篇说到,可以使用scrollBy和scrollTo移动View,这里产生一个问题,加入一个View在屏幕的左上角即(0,0)位置,他调用
scrollTo(-300,-300)时,会立即跳过去,显得很突兀,如何让他平缓地划过去呢?就可以用本篇的方法了。
使用方法:
int startX;//滑动动作的起始点x坐标
int startY;//滑动动作的起始点y坐标
int dx; //x轴偏移量向左为负,向右为正(即负值向右移,正值向左移)
int dy; //y轴偏移量向左为负,向右为正(即负值向右移,正值向左移)
int duration;//时间,默认为250ms
注意:这里的dx和dy和上篇的scrollBy的参数相似,都是往哪个地方移动了多少,而不是往哪个点移动
Scroller mScroller=new Scroller(context);
mScroller.startScroll(startX,startY,dx,dy);
invalidate();//
除了上面的代码之外,还得重写View的computeScroll方法:
这里我的理解是:判断某一阶段滑动完成,就调用scrollTo方法,实现真正的移动
@Override
public void computeScroll() {
if (mScroller.computeScrollOffset()) {
scrollTo(mScroller.getCurrX(),mScroller.getCurrY());
po