zoukankan      html  css  js  c++  java
  • 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);
    
  • 相关阅读:
    bzoj1923 [Sdoi2010]外星千足虫(gauss)
    bzoj1013 [JSOI2008]球形空间产生器sphere(gauss)
    bzoj1013 [JSOI2008]球形空间产生器sphere(gauss)
    高斯消元(写(shui)题必备)
    随 (rand)(校内hu测10.6T1)(dp+矩阵+数论)
    随 (rand)(校内hu测10.6T1)(dp+矩阵+数论)
    题(problem)(详解10.5hu测T3:Catalan)
    题(problem)(详解10.5hu测T3:Catalan)
    高精度(模板)
    FJUT ACM 2144 并查集
  • 原文地址:https://www.cnblogs.com/fomin/p/9705330.html
Copyright © 2011-2022 走看看