AndroidアニメーションのInterpolator
2436 ワード
Androidソースには、Interpolatorが2つあります.一つはframeworks/base/graphics/java/android/graphics/Interpolator.javaです.もう1つはframeworks/base/core/java/android/view/animation/interpolator.javaです.今日お話ししたいのは後者です.
frameworks/base/core/java/android/view/animation/interpolator.javaのソースコードは次のとおりです.
Androidは3.0で属性アニメーションを導入する際、TimeInterpolatorインタフェースを追加した.Interpolatorはそれに対応する古いインタフェースになります.InterpolatorはTimeInterpolatorを継承し、古いコードと互換性があります.開発者は,新しいコードを開発する際に,TimeInterpolatorインタフェースを直接実現することを提案する.だから、TimeInterpolatorのソースコードをもう一度見なければなりません.
frameworks/base/core/java/android/animation/timeInterpolator.javaのソースコードは次のとおりです.
TimeInterpolatorは、アニメーションが変化するインタフェースを定義します.float getInterpolation(float input)の入力は[0,1.0]であり、アニメーション補間器の正規化時間であり、0は開始、1.0は終了を表す.戻り値は、アニメーション補間器の正規化結果[0,1.0]であるが、戻り値がターゲット(overshoot their targets)を超えた場合には<0または>1.0であってもよい.
frameworks/base/core/java/android/view/animation/interpolator.javaのソースコードは次のとおりです.
/**
* An interpolator defines the rate of change of an animation. This allows
* the basic animation effects (alpha, scale, translate, rotate) to be
* accelerated, decelerated, repeated, etc.
*/
public interface Interpolator extends TimeInterpolator {
// A new interface, TimeInterpolator, was introduced for the new android.animation
// package. This older Interpolator interface extends TimeInterpolator so that users of
// the new Animator-based animations can use either the old Interpolator implementations or
// new classes that implement TimeInterpolator directly.
}
Androidは3.0で属性アニメーションを導入する際、TimeInterpolatorインタフェースを追加した.Interpolatorはそれに対応する古いインタフェースになります.InterpolatorはTimeInterpolatorを継承し、古いコードと互換性があります.開発者は,新しいコードを開発する際に,TimeInterpolatorインタフェースを直接実現することを提案する.だから、TimeInterpolatorのソースコードをもう一度見なければなりません.
frameworks/base/core/java/android/animation/timeInterpolator.javaのソースコードは次のとおりです.
/**
* A time interpolator defines the rate of change of an animation. This allows animations
* to have non-linear motion, such as acceleration and deceleration.
*/
public interface TimeInterpolator {
/**
* Maps a value representing the elapsed fraction of an animation to a value that represents
* the interpolated fraction. This interpolated value is then multiplied by the change in
* value of an animation to derive the animated value at the current elapsed animation time.
*
* @param input A value between 0 and 1.0 indicating our current point
* in the animation where 0 represents the start and 1.0 represents
* the end
* @return The interpolation value. This value can be more than 1.0 for
* interpolators which overshoot their targets, or less than 0 for
* interpolators that undershoot their targets.
*/
float getInterpolation(float input);
}
TimeInterpolatorは、アニメーションが変化するインタフェースを定義します.float getInterpolation(float input)の入力は[0,1.0]であり、アニメーション補間器の正規化時間であり、0は開始、1.0は終了を表す.戻り値は、アニメーション補間器の正規化結果[0,1.0]であるが、戻り値がターゲット(overshoot their targets)を超えた場合には<0または>1.0であってもよい.