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

滚动视图的方法有两种:scrollTo和scrollBy,而Scroller就是它们的辅助工具类,所以Scroller是学好高级UI必不可少的一课。

(1)scrollTo、scrollBy、getScrollX、getScrollY

view的内容本身具备滚动的方法,其中滚动方法如下:

scrollTo:相对于初始位置移动

scrollBy:相对于上次移动的最后位置移动

这两个方法特别需要注意以下几点:

两者移动的都是view的内容,view本身是不移动的,所以getX和getY的值不会受到这两个方法的影响;

不要再在onDraw中调用这两个方法,避免onDraw方法被重复执行,因为一旦调用这两个方法view会被重绘,onDraw方法会再次执行。

view内容滚动的方法有了,那么该如何获取view内容被滚动的距离呢?看以下两个方法:

getScrollX:获取view的内容在X轴滚动的距离

getScrollY:获取view的内容在Y轴滚动的距离

以上只说到view内容的滚动,那么view本身的移动用什么方法呢?

答:setX和setY方法。

本文的重点内容是Scroller,这个辅助类的作用不是view本身的移动,而是view内容的滚动,下面开始简单说明一下Scroller辅助类。

(2)熟悉Scroller的构造方法

//默认插值器是ViscousFluidInterpolator

Scroller mScroller = new Scroller(mContext);

//指定一个插值器

Scroller mScroller = new Scroller(mContext, new AccelerateDecelerateInterpolator());

//指定一个插值器,第三个参数表示是否开启“飞轮”效果,也就是多次滚动时速度叠加

Scroller mScroller = new Scroller(mContext, new AccelerateDecelerateInterpolator(), false);

(3)熟悉插值器

3da345b00707

图片.png

Scroller其实就是在scrollTo(x, y)和scrollBy(x, y)的基础上添加滚动效果,滚动效果是一个动画,当我们new一个Scroller对象时,就已经指定了一个插值器,下面来说明一下各种插值器:

ViscousFluidInterpolator:这是一个默认插值器,当构造Scroller时,如果不传递插值器或者插值器为null时,系统默认使用ViscousFluidInterpolator插值器。

AccelerateDecelerateInterpolator:在动画开始与结束的时候速率改变比较慢,在中间的时候速率较快。

AccelerateInterpolator:在动画开始的地方速率改变比较慢,然后开始加速。

AnticipateInterpolator:开始的时候向后然后向前甩。

AnticipateOvershootInterpolator:开始的时候向后然后向前甩一定值后返回最后的值。

BounceInterpolator:反弹插值器。

CycleInterpolator:动画循环播放特定的次数,速率改变沿着正弦曲线。

DecelerateInterpolator:在动画开始的地方快然后慢。

LinearInterpolator:以常量速率改变。

OvershootInterpolator:向前甩一定值后再回到原来位置。

PathInterpolator:路径插值器,我们可以按照自己想要的轨迹滚动。

PathInterpolator(Path path)

PathInterpolator(float controlX, float controlY)

PathInterpolator(float controlX1, float controlY1, float controlX2, float controlY2)

FastOutLinearInInterpolator:MaterialDesign基于贝塞尔曲线的插补器效果:依次慢慢快。

FastOu

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值