Android知识Android开发Android技术知识

Scorller的使用详解一

2017-04-17  本文已影响143人  Angels_安杰

更多分享:http://www.cherylgood.cn

Scorller类官方介绍


概要说明


  • Scroller(Context context)
    Create a Scroller with the default duration and interpolator.
    使用默认的持续时间值和插值器创建一个Scroller
  • Scroller(Context context, Interpolator interpolator)
    Create a Scroller with the specified interpolator.
    使用指定的插值器创建一个Scroller,持续时间之还是默认的250
  • Scroller(Context context, Interpolator interpolator, boolean flywheel)
    Create a Scroller with the specified interpolator.

摘录自:http://blog.csdn.net/vipzjyno1/article/details/24592591动画效果:

  • AccelerateDecelerateInterpolator: 开始和结束都是缓慢的,通过中间时候加速
  • AccelerateInterpolator:先缓慢,后加速
  • AnticipateInterpolator:先后退,后前进
  • AnticipateOvershootInterpolator:开始后退,然后前进并超过终点位置,最终退回到终点
  • BounceInterpolator:弹性衰减到结束
  • CycleInterpolator:重复循环动画,速度变化遵循正弦定律
  • DecelerateInterpolator:先加速,后减速
  • LinearInterpolator:线性的
  • OvershootInterpolator:超过终点然回来

scroller method

  • void abortAnimation()
    滚到最终的x,y位置中止动画。
  • boolean computeScrollOffset()
    调用该方法计算,获取当前的位置。
    void extendDuration(int extends)
    扩展滚动动画。
    void fling(int startX,int startY,int velocityX,int velocityY,int minX,int maxX,int minY,int maxY)
    开始滚动基于一个拖拽手势。
    final void forceFinished(boolean finished)
    强行停止滚动。
    float getCurrVelocity()
    返回当前滚动速度。
    final int getCurrX()
    返回滚动中当前的X偏移量。
    final int getCurrY()
    返回滚动中当前的Y偏移量。
    final int getDuration()
    返回滚动事件将花费多长时间,以毫秒为单位。
    final int getFinalX()
    返回滚动结束的x坐标值。
    最终int getFinalY()
    返回滚动结束的y坐标值。
    final int getStartX()
    返回滚动中的起始X偏移量。
    final int getStartY()
    返回滚动中的起始Y偏移量。
    final boolean isFinished()
    返回滚动滚轮是否完成滚动。
    void setFinalX(int newX)
    设置此滚动条的最终位置(X)。
    void setFinalY(int newY)
    设置此滚动条的最终位置(Y)。
    final setFriction(float friction)
    设置摩擦力的摩擦量。
    void startScroll(int startX,int startY,int dx,int dy,int duration)
    通过提供起点,行程距离和滚动持续时间来开始滚动。
    void startScroll(int startX,int startY,int dx,int dy)
    通过提供起点和行驶距离开始滚动。
    int timePassed()
    返回自滚动开始以来经过的时间。

引言


Scroller


111.png

如上图:view1从右边往左下滚动,其实内部是将viewgroup的可视区域往右移动了,
使用Scroller时,最长用的方法就是scrollTo 和ScrollBy,有关这两个方法的使用介绍和区别,网上其实有很多相关的文章。


2017-04-17 17_52_43.gif
  • 当点击startScrollby的时,让LinearLayout里面的textview向右滚动100px,这里为什么是-100呢,按照坐标轴来说100才是向右移动才对啊!
  • 当时我也是一脸懵逼的,突然一想,不对,移动的并不是textview,而是linearlayout的可视区域,视觉上的textview向右滚,其实是linearlayout的可视区域向左移动,所以是-100;当点击startScrollto的时候,我们让linearlayout的可视区域回到原点。
  • 由于上传文件大小限制,效果图的速度是被加快了的,其实滑动是一下子就滚到一个点的,没有动画效果。这种体验是及不好的。接下来我们就来实现平滑的滚动,让他潇洒滚一回吧!

平滑的滚吧!蛋炒饭~~

突然想另起一章来继续解析scroller,不要打我,请看下一章节

上一篇下一篇

猜你喜欢

热点阅读