自定义ViewGroup实现类似ViewPager的滑动效果

相信用过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.csdn.net/qinjuning/article/details/7419207  感谢Lz的文章让我解悟了。

代码下载页:http://download.csdn.net/detail/neacy_zz/5727067



你可能感兴趣的:(自定义ViewGroup实现类似ViewPager的滑动效果)