相信用过ViewPager的人都知道他的滑动效果是怎么样的,在经过上次的学习ViewGroup之后我开始琢磨自己整理一个类似的功能,在这里面主要用的类有Scroller,ViewGroup,VelocityTracker,以及自己写的图片下载类(ps:当然这个不重要啦不是主要类)。主要思想是利用Scroller来滑动,用ViewGroup来重绘控件。
1.Scroller的使用:
通常我们需要实例化一个对象 mScroller = new Scroller(mContext);
涉及到的方法有:
mScroller.startScroll(screenCur * getWidth(), 0, getWidth(), 0, 3000);// 用于显示一开始的位置里面的参数分别代表一开始X,Y的坐标
scrollTo(mScroller.getCurrX(), mScroller.getCurrY());// 移动到具体的坐标
需要我们重写的方法来决定滑动完成之后应该定位在哪。
@Override
public void computeScroll() {
super.computeScroll();
if (mScroller.computeScrollOffset()) {
scrollTo(mScroller.getCurrX(), mScroller.getCurrY());// 移动到该点
postInvalidate();
}
}
2.VelocityTracker 的使用
VelocityTracker代表的是滑动的速度单位是像素例如1000代表的是每秒多少像素,1代表每微秒多少像素。
if (mVelocityTracker == null) {
mVelocityTracker = VelocityTracker.obtain();
}
mVelocityTracker.addMovement(event);
在完成操作之后记得mVelocityTracker.recycle();
3.ViewGroup的使用参考上篇文章就不写了。
在代码里面涉及到的几个方法
View.getScrollrX() getScrollX()的返回值为:当前View显示部分的左边到第一个View的左边的距离。
Scroller.getCurX() 返回的是Scroller当前距离最左边的的距离
当然网上资料主要参考是的http://blog.youkuaiyun.com/qinjuning/article/details/7419207 感谢Lz的文章让我解悟了。
代码下载页:http://download.youkuaiyun.com/detail/neacy_zz/5727067