android中动画学习

动画的类在AndroidSDK/sources/android-17/android/view/animation文件夹中。。。

如下图:

经过整理,可分为3类:

1. Interpolator部分

Interpolator是基类

Class/Interface Description
AccelerateDecelerateInterpolator An interpolator whose rate of change starts and ends slowly but accelerates through the middle.
AccelerateInterpolator An interpolator whose rate of change starts out slowly and then accelerates.
AnticipateInterpolator An interpolator whose change starts backward then flings forward.
AnticipateOvershootInterpolator An interpolator whose change starts backward, flings forward and overshoots the target value, then finally goes back to the final value.
BounceInterpolator An interpolator whose change bounces at the end.
CycleInterpolator An interpolator whose animation repeats for a specified number of cycles.
DecelerateInterpolator An interpolator whose rate of change starts out quickly and and then decelerates.
LinearInterpolator An interpolator whose rate of change is constant.
OvershootInterpolator An interpolator whose change flings forward and overshoots the last value then comes back.
TimeInterpolator An interface that allows you to implement your own interpolator.

是Interpolator的派生类。这些都被统称为Property Animation。


2. Animation部分

Animation是基类。。。

AlphaAnimation

RotateAnimation

ScaleAnimation

TranslateAnimation为Animation的派生类。这些是Animation部分。


3. 杂项

AnimationSet, AnimationUtils, GridLayoutAnimationController, LayoutAnimationController

这些后续分析。。


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// Add Time: 2013/6/28

有关自定义动画的部分

上次还没有分析TimeInterpolator,现在来分析一下。

interpolator 的含义为:【计】 校对机, 分类机, 插补器, 内插器, 插入器

上次说到那些Interpolator相关的类都是派生与Interpolator的,

很重要的一点Interpolator的父类为TimeInterpolator。

因此我们新建一个类,其父类为TimeInterpolator就可以自定义动画了。

下面是重载的是模拟BounceInterpolator的动画实现。。

mObjectAnim.setInterpolator(new TimeInterpolator() {
				    private float bounce(float t) {
				        return t * t * 8.0f;
				    }
					@Override
					public float getInterpolation(float t) {
						// TODO Auto-generated method stub
						// _b(t) = t * t * 8
						// bs(t) = _b(t) for t < 0.3535
						// bs(t) = _b(t - 0.54719) + 0.7 for t < 0.7408
						// bs(t) = _b(t - 0.8526) + 0.9 for t < 0.9644
						// bs(t) = _b(t - 1.0435) + 0.95 for t <= 1.0
						// b(t) = bs(t * 1.1226)
						t *= 1.1226f;
						if (t < 0.3535f) return bounce(t);
						else if (t < 0.7408f) return bounce(t - 0.54719f) + 0.7f;
						else if (t < 0.9644f) return bounce(t - 0.8526f) + 0.9f;
						else return bounce(t - 1.0435f) + 0.95f;
					}

				});
你可以更改算法来实现个性的动画。








你可能感兴趣的:(android中动画学习)