13. 动画

优质
小牛编辑
120浏览
2023-12-01

动画

注意:动画只能工作在API级别11(Android 3.0.x)或更高

在低版本Android使用,动画将不执行(但是也不崩溃)

所有的图表类型都支持动画,那能被用来创建图表以一种很酷的方式。有三种类型的动画方法存在通过x轴,y轴或者两个轴来区分:

  • animateX(int durationMillis):动画的图表值在水平轴,意味着图标将在指定的时间从左到右建立。
  • animateY(int durationMillis):动画图表值在y轴,意味着图表将在指定的时间内从下到上构建。
  • animateXY(int xDuration, int yDuration):动画显示于水平和垂直的轴上,结果为左右上下都可以构建。

    1. mChart.animateX(3000); // animate horizontal 3000 milliseconds
    2. // or:
    3. mChart.animateY(3000); // animate vertical 3000 milliseconds
    4. // or:
    5. mChart.animateXY(3000, 3000); // animate horizontal and vertical 3000 milliseconds

如果animate(…)(任何类)被调用,不用再调用invalidate()来刷新图表。

动画缓冲

这个库允许你为你的动画使用好的缓冲函数。你能选着下面预定义的静态Easing.EasingOption

  1. public enum EasingOption {
  2. Linear,
  3. EaseInQuad,
  4. EaseOutQuad,
  5. EaseInOutQuad,
  6. EaseInCubic,
  7. EaseOutCubic,
  8. EaseInOutCubic,
  9. EaseInQuart,
  10. EaseOutQuart,
  11. EaseInOutQuart,
  12. EaseInSine,
  13. EaseOutSine,
  14. EaseInOutSine,
  15. EaseInExpo,
  16. EaseOutExpo,
  17. EaseInOutExpo,
  18. EaseInCirc,
  19. EaseOutCirc,
  20. EaseInOutCirc,
  21. EaseInElastic,
  22. EaseOutElastic,
  23. EaseInOutElastic,
  24. EaseInBack,
  25. EaseOutBack,
  26. EaseInOutBack,
  27. EaseInBounce,
  28. EaseOutBounce,
  29. EaseInOutBounce,
  30. }

基本上有两种缓冲动画:

1、预定义缓冲动画:(这些代码可以运行在任何安卓版本)

  1. public void animateY(int durationmillis, Easing.EasingOption option);

使用预定义缓冲选项调用任何动画方法

  1. // animate both axes with easing
  2. mChart.animateY(3000, Easing.EasingOption.EaseOutBack);

在安卓3.0(API Level 11)以下版本总是使用Easing.EasingOption为预定义缓冲动画。

2、自定义缓冲函数:(自定义缓冲函数在安卓3.0以下会崩溃)

  1. public void animateY(int durationmillis, EasingFunction function);

创建自定义缓冲动画通过创建你自己的缓冲函数和实现EasingFunction接口:

  1. /**
  2. * Interface for creating custom made easing functions.
  3. */
  4. public interface EasingFunction {
  5. /**
  6. * Called everytime the animation is updated.
  7. * @param input - the time passed since the animation started (value between 0 and 1)
  8. */
  9. public float getInterpolation(float input);
  10. }

下面是调用这个的方法(注意,这个运行在安卓3.0以下会奔溃)

  1. // animate both axes with easing
  2. mChart.animateY(3000, new MyEasingFunction());