Android应用开发Scroller详解及源码浅析

switch (ev.getActionMasked()) {

case MotionEvent.ACTION_DOWN:

mInitX = ev.getX();

mInitY = ev.getY();

super.dispatchTouchEvent(ev);

return true;

case MotionEvent.ACTION_MOVE:

//>0为手势向右下

mOffsetX = ev.getX() - mInitX;

mOffsetY = ev.getY() - mInitY;

//横向手势跟随移动

if (Math.abs(mOffsetX) - Math.abs(mOffsetY) > ViewConfiguration.getTouchSlop()) {

int offset = (int) -mOffsetX;

if (getScrollX() + offset > mRightView.getWidth() || getScrollX() + offset < 0) {

return true;

}

this.scrollBy(offset, 0);

mInitX = ev.getX();

mInitY = ev.getY();

return true;

}

break;

case MotionEvent.ACTION_CANCEL:

case MotionEvent.ACTION_UP:

//松手时刻滑动

int offset = ((getScrollX() / (float)mRightView.getWidth()) > 0.5) ? mRightView.getWidth() : 0;

// this.scrollTo(offset, 0);

mScroller.startScroll(this.getScrollX(), this.getScrollY(), offset-this.getScrollX(), 0);

invalidate();

mInitX = 0;

mInitY = 0;

mOffsetX = 0;

mOffsetY = 0;

break;

}

return super.dispatchTouchEvent(ev);

}

@Override

public void computeScroll() {

if (mScroller.computeScrollOffset()) {

this.scrollTo(mScroller.getCurrX(), mScroller.getCurrY());

postInvalidate();

}

}

}

简单吧,使用Scroller就能这么优雅的滑动,不解释,简单的Demo,哈哈;有了这个基本映像我们直接高速——源码探测,搞清源码基本原理流程就能用的顺手喽。

【工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请尊重作者劳动成果。私信联系我

3 Scroller源码浅析

==================

通过上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值