Android Interpolator(插值器)

1、概述
插值器定义如何计算动画中的特定值作为时间的函数。例如,指定动画在整个动画中线性发生,这意味着动画在整个时间内均匀移动,或者指定动画以使用非线性时间,例如,在开始或结束时使用加速或减速动画。
Android中提供的Interpolator主要以下几个:
| | 资源ID | 说明 |
----|----|----
| AccelerateDecelerateInterpolator | @android:anim/accelerate_decelerate_interpolator | 变化率开始和结束缓慢但在中间加速。 |
| AccelerateInterpolator | @android:anim/accelerate_interpolator | 变化率开始缓慢然后加速。 |
| AnticipateInterpolator | @android:anim/anticipate_interpolator | 变化开始向后然后向前飞行 |
| AnticipateOvershootInterpolator | @android:anim/anticipate_overshoot_interpolator | 变化开始向后然后向前飞行并超过目标值,最后返回到最终值。 |
| BaseInterpolator | | 插值器扩展的抽象类 |
| BounceInterpolator | @android:anim/bounce_interpolator | 更改在结束时反弹 |
| CycleInterpolator | @android:anim/cycle_interpolator | 重复动画指定的周期数 |
| DecelerateInterpolator | @android:anim/decelerate_interpolator | 变化率快速开始然后减速 |
| LinearInterpolator | @android:anim/linear_interpolator | 变化率是恒定的 |
| OvershootInterpolator | @android:anim/overshoot_interpolator | 变化向前晃动并超过最后一个值然后返回 |

2、具体使用
xml使用

android:interpolator="@android:anim/accelerate_decelerate_interpolator"

代码使用

Interpolator interpolator = new AccelerateDecelerateInterpolator();
animation.setInterpolator(interpolator);

3、自定义插值器
要想创建一个属于你自己的插值器类,你必须实现 Interpolator 接口。这个接口只定义了一个方法:

public float getInterpolation(float input) 

定义Interpolator,定义一个动画以最快的速度启动,然后减速运动至一半,最后加速运动至结束。

public class TestInterpolator implements Interpolator {

    @Override
    public float getInterpolation(float input) {
        float x = 2.0f * input - 1.0f;
        return 0.5f * (x * x * x + 1.0f);
    }
}

自定义插值器是不能在xml使用,直接在代码使用

Interpolator interpolator = new TestInterpolator();
animation.setInterpolator(interpolator);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值