对于Androi的帧动画,可以制作gif图片,有时为了能够动态的生成帧动画,就得需要使用代码构建了
AnimationDrawable类中使用 addFrame用来添加帧。
AnimationDrawable类中使用 start来启动动画。
AnimationDrawable类中使用 stop来停止动画。
另外对于补间动画的理解中容易出现错误的地方,更正如下:
RotateAnimation ra = new RotateAnimation(fromDegrees, toDegrees, pivotX, pivotY)
pivotX,pivotY当数值大于1时表示的是实际像素
RotateAnimation ra = new RotateAnimation(fromDegrees, toDegrees, pivotXType, pivotXValue, pivotYType, pivotYValue)
pivotX,pivotY当数值大于1时表示的是比例位置
Animation自定义动画:
public class CustomAnimation extends Animation { @Override protected void applyTransformation(float interpolatedTime, Transformation t) { super.applyTransformation(interpolatedTime, t); t.getMatrix().setTranslate((float) (Math.sin(10*interpolatedTime)*50), 0); } }
Animator自定义动画方式一
final ShapeHolder ball5 = balls.get(4); ValueAnimator valueAnimator5 = ValueAnimator.ofFloat(0f, getHeight() - ball5.getHeight()); valueAnimator5.setDuration(500); valueAnimator5.addUpdateListener(new AnimatorUpdateListener() { // ValueAnimator需要自己在监听处理中设置对象参数 @Override public void onAnimationUpdate(ValueAnimator animation) { // 用animation.getAnimatedValue()得到当前的属性值,设置进动画对象中 ball5.setY((Float) animation.getAnimatedValue()); // 记得要刷新View否则不会调用重新绘制 invalidate(); } });
Animator自定义动画方式二
public class Point { private float x; private float y; public Point(float x, float y) { this.x = x; this.y = y; } public float getX() { return x; } public float getY() { return y; } }
public class PointEvaluator implements TypeEvaluator{ @Override public Object evaluate(float fraction, Object startValue, Object endValue) { Point startPoint = (Point) startValue; Point endPoint = (Point) endValue; float x = startPoint.getX() + fraction * (endPoint.getX() - startPoint.getX()); float y = startPoint.getY() + fraction * (endPoint.getY() - startPoint.getY()); Point point = new Point(x, y); return point; } }
Point point1 = new Point(0, 0); Point point2 = new Point(300, 300); ValueAnimator anim = ValueAnimator.ofObject(new PointEvaluator(), point1, point2); anim.setDuration(5000); anim.start();
或如下使用
ObjectAnimator.ofObject(Object target, String propertyName, TypeEvaluator evaluator, Object... values)