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

本文介绍了如何通过Scroller和VelocityTracker实现自定义ViewPager的滑动效果。文章详细讲解了Scroller的使用方法,包括如何启动滚动、计算当前位置以及如何在ViewGroup中重绘控件。同时,还介绍了VelocityTracker的使用技巧,帮助开发者更好地理解滑动速度的计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相信用过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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值