美文网首页高级UI
高级UI<第四十五篇>:Android OverScroller

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

作者: NoBugException | 来源:发表于2020-02-29 13:22 被阅读0次
图片.png

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

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

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

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

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

  • isOverScrolled()

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

  • springBack(int startX, int startY, int minX, int maxX, int minY, int maxY)

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

  • notifyHorizontalEdgeReached(int startX, int finalX, int overX)

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

  • notifyVerticalEdgeReached(int startY, int finalY, int overY)

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

  • fling(int startX, int startY, int velocityX, int velocityY, int minX, int maxX, int minY, int maxY, int overX, int overY)
    fling方法Scroller类也有,但OverScroller多出两个参数:overX、overY
    [overX] x轴超出回弹距离
    [overY] y轴超出回弹距离

首先,我们两分析一下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详解即可。

[本章完...]

相关文章

网友评论

    本文标题:高级UI<第四十五篇>:Android OverScroller

    本文链接:https://www.haomeiwen.com/subject/mgmrfhtx.html