Meblog

このブログ記事は個人の見解であり、所属する組織の公式見解ではありません

InterpolatorでつかうEasingの話

仕事上、UIアニメーションを扱う事がある。アニメーションに書かせないのが、Interpolatorだ。
で、動きを簡単に見れるサイトを探すんだけど、検索ワードを忘れてしまう。"Interpolator Equation"とかでググるから出てこないんだ。

いつも探したいのは以下のサイト
http://gizma.com/easing/

Flashのデモと数式、実装も書いてあるので、ほとんどコピペですむので楽ちんなサイト

Interpolator

複数個のキーポイントをなめらかにつなぐのがInterpolatorだ。

Androidでは、ObjectAnimatorを使うと、簡単にイージングを使う事ができる

animator.setInterpolator(new AccelateInterpolator());

ただ、このAndroidの実装は気に入らない点がちょくちょく出てくる。細かな挙動が制御できないからだ。そういうときはInterpolatorを独自に実装しなおさなくてはいけない。

ただ、Interpolatorはある時点に対する値を返すだけの構造なので、実装は簡単だ。
で、件の記事からコードをひっぱてきて、貼付けてしまう、というわけ。

Androidでの実装

ちなみにAndroidでの実装は以下のようになる。

public class QuarticEasingOutInterpolator implements 
Interpolator{
    @Override
     public float getInterpolation(float t) {
        t--;
        return(1 - t*t*t*t);
    }
}

簡単だねえ。このときの引数tは0.0から1.0まで変化する。
そのときに返却値を定義するだけだ。