高级UI

高级UI<第四十五篇>:Android OverScroller

2020-02-29  本文已影响0人  NoBugException
图片.png

上图是OverScroller的注释,注释的意思是:大多数情况下,OverScrollerScroller的替代品。

有关Scroller,我也整理了一篇文章:

高级UI<第四十四篇>:Android Scroller详解

我们知道想把一个View的内容偏移至指定坐标(x,y)处,利用scrollTo()方法直接调用就OK了。但我们不能忽视的是,该方法本身来的的副作用:很迅速的将View或ViewGroup偏移至目标点,而没有对这个偏移过程添加滚动效果,对用户而言可能是不太友好的。于是,基于这样的偏移控制,Scroller类被设计出来了,该类的主要作用是为偏移过程添加滚动效果,从而使偏移更流畅,更完美,更友好。

OverScroller的功能要比Scroller完善,Over是超出的意思,即OverScroller提供了对超出滑动边界的情况的处理(回弹),这两个类的API基本是一致的,OverScroller比Scroller添加了以下几个方法:

返回当前的位置是否有效 或者是否超出滚动边界。

springBack英文意思就是回弹吧,没错,这个方法就是实现回弹效果,或者说让视图恢复原来位置。

通知水平滚动是否到达边界,通常这个信息来处理 知道什么时候已经开始滚动,比如在调用fling这个方法,然而很多情况下,这不能提前知道 ,这个方法将 开始X到结束X 转化成合适的值 作为当前的动作和动画。

通知垂直滚动是否到达边界,通常 这个信息来处理 知道什么时候已经开始滚动,比如在调用fling这个方法,然而很多情况下,这不能提前知道 ,这个方法将 开始X到结束X 转化成合适的值 作为当前的动作和动画。

首先,我们两分析一下public void fling(int startX, int startY, int velocityX, int velocityY, int minX, int maxX, int minY, int maxY)方法
[startX] :x轴起始位置
[startY] :y轴起始位置
[velocityX] :x轴滑动速度
[velocityY] :y轴滑动速度
[minX] :x轴最小边界
[maxX] :x轴最大边界
[minY] :y轴最小边界
[maxY] :y轴最大边界

看到以上参数的解释,我想应该就很好理解了。
假设,最小边界为10,最大边界为50。
那么如果起始滑动速度为5,那么滑动距离不为5,而是10;
如果起始滑动速度为20,那么滑动距离为20;
如果起始滑动速度为60,那么滑动距离不为60,而是50;

OverScroller新增的方法中多了两个参数:overX、overY。
假设超出回弹距离为20,那么
那么如果起始滑动速度为5,那么滑动距离不为5,而是10,无回弹效果;
如果起始滑动速度为20,那么滑动距离为20,无回弹效果;
如果起始滑动速度为60,那么滑动距离为60,并回弹到50位置;
如果起始滑动速度为80,那么滑动距离为70,并回弹到50位置;

最后,说一下,OverScroller其它接口和Scroller一样,直接查看高级UI<第四十四篇>:Android Scroller详解即可。

[本章完...]

上一篇 下一篇

猜你喜欢

热点阅读