13. 动画
优质
小牛编辑
126浏览
2023-12-01
动画
注意:动画只能工作在API级别11(Android 3.0.x)或更高
在低版本Android使用,动画将不执行(但是也不崩溃)
所有的图表类型都支持动画,那能被用来创建图表以一种很酷的方式。有三种类型的动画方法存在通过x轴,y轴或者两个轴来区分:
- animateX(int durationMillis):动画的图表值在水平轴,意味着图标将在指定的时间从左到右建立。
- animateY(int durationMillis):动画图表值在y轴,意味着图表将在指定的时间内从下到上构建。
animateXY(int xDuration, int yDuration):动画显示于水平和垂直的轴上,结果为左右上下都可以构建。
mChart.animateX(3000); // animate horizontal 3000 milliseconds
// or:
mChart.animateY(3000); // animate vertical 3000 milliseconds
// or:
mChart.animateXY(3000, 3000); // animate horizontal and vertical 3000 milliseconds
如果animate(…)(任何类)被调用,不用再调用invalidate()来刷新图表。
动画缓冲
这个库允许你为你的动画使用好的缓冲函数。你能选着下面预定义的静态Easing.EasingOption
public enum EasingOption {
Linear,
EaseInQuad,
EaseOutQuad,
EaseInOutQuad,
EaseInCubic,
EaseOutCubic,
EaseInOutCubic,
EaseInQuart,
EaseOutQuart,
EaseInOutQuart,
EaseInSine,
EaseOutSine,
EaseInOutSine,
EaseInExpo,
EaseOutExpo,
EaseInOutExpo,
EaseInCirc,
EaseOutCirc,
EaseInOutCirc,
EaseInElastic,
EaseOutElastic,
EaseInOutElastic,
EaseInBack,
EaseOutBack,
EaseInOutBack,
EaseInBounce,
EaseOutBounce,
EaseInOutBounce,
}
基本上有两种缓冲动画:
1、预定义缓冲动画:(这些代码可以运行在任何安卓版本)
public void animateY(int durationmillis, Easing.EasingOption option);
使用预定义缓冲选项调用任何动画方法
// animate both axes with easing
mChart.animateY(3000, Easing.EasingOption.EaseOutBack);
在安卓3.0(API Level 11)以下版本总是使用Easing.EasingOption为预定义缓冲动画。
2、自定义缓冲函数:(自定义缓冲函数在安卓3.0以下会崩溃)
public void animateY(int durationmillis, EasingFunction function);
创建自定义缓冲动画通过创建你自己的缓冲函数和实现EasingFunction接口:
/**
* Interface for creating custom made easing functions.
*/
public interface EasingFunction {
/**
* Called everytime the animation is updated.
* @param input - the time passed since the animation started (value between 0 and 1)
*/
public float getInterpolation(float input);
}
下面是调用这个的方法(注意,这个运行在安卓3.0以下会奔溃)
// animate both axes with easing
mChart.animateY(3000, new MyEasingFunction());