美文网首页高级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