各位看官们大家好,上一回中咱们说的例子是"逐帧动画的代码实现方法",这一回中咱们说的例子是"值动画:ValueAnimator"。闲话休提,言归正转,让我们一起Talk Android吧!
概念介绍
我们在本章回中介绍另外一种动画:值动画。它表示让动画在指定的数值区间内运行,或者在指定对象范围内运行.我们使用ValueAnimator
类表示值动画。
标签属性
明白值动画的概念后,我们来介绍它的使用方法,和视图动画类似,值动画有xml配置和代码实现两种方法,本章回中先介绍如何使用xml配置来实现值动画。
接下来先介绍xml中的标签和属性,以及它们的使用方法。 值动画使用<animator>
标签,该标签包含以下常用的属性;
android:valueFrom //表示值变化范围的起点
android:valueTo //表示值变化范围的终点
android:duration //表示播放动画的时间单位是ms
android:valueType //表示值的类型,其值为"intType","floattype"
android:repeatCount //表示动画重复播放的次数
android:repeatMode //表示动画重复播放的模式
android:interpolator //表示动画播放时使用的插值器
关于上面的属性,我们做一些补充说明:
- 动画的起点值和终点值都会包含进来,类似数学中的闭区间[1,3],表示从1到3,而且包含1和3这两个边界值;
- 值的内容与值的类型一致,比如在from属性中使用了3,那么在valueType属性中必须使用intType;
- 其它的属性含义可以参考上面的注释,此外,这些属性的名称和视图动画中的名称完全相同,因此它们的含义和用法与视图动画中的完全一致,这里就不详细介绍了。
使用方法
- 在animator目录中创建动画的xml配置文件,项目中默认没有animator目录,需要我们创建此目录,它位于res目录下;
- 在代码中获取上一步中创建的值动画对象,并且获取xml文件中的动画文件;
- 给值动画对象添加值变化的监听器,并且在监听器中获取动画中的数值,可以使用这些数据来操作控件;
- 使用值动画对象的start()方法开始播放动画;
示例代码
明白值动画的使用方法后,接下来通过文字结合代码的方式来介绍使用值动画。首先在xml中配置值动画的属性,详细的代码如下所示:
<animator xmlns:android="http://schemas.android.com/apk/res/android"
android:valueFrom="10"
android:valueTo="1"
android:duration="10000"
android:valueType="intType"
android:repeatCount="0"
android:repeatMode="restart"
android:interpolator="@android:anim/linear_interpolator">
</animator>
接下是程序中的代码,详细如下:
//获取xml中的动画
ValueAnimator animator = (ValueAnimator) AnimatorInflater.loadAnimator(this,R.animator.exanimator);
//添加监听器并且在监听器操作控件
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animator) {
int value = (int) animator.getAnimatedValue();
mTVValueAnimator.setText(String.valueOf(value));
}
});
//播放动画
animator.start();
上面的代码中先是创建了一个值动画,并且设置它的值变化范围为10到1,然后在该动画对象的监听器中获取这些值,同时把这些值设置到TextView控件上,这样我们就
能看到这些值了。
代码中省略了TextView的布局和代码,拿来直接使用,大家可以自行补上。编译并且运行该程序可以得到一个显示倒计时的动画,该动画从数字10到1逐渐变化,我在这里就不演示具体的效果了,希望大家自己动手实践。
看官们,关于"值动画:ValueAnator"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!