接着上次的View Animation动画,这次是Frame Animation。具体点来讲就是在Frame层面上进行变化的动画效果的设置。说白了就是定时更换“背景”图。来实现不同的界面展示。
实现的步骤也是很简单如下:
- 在res目录下的drawable文件夹下创建一个xml文件
- xml文件以anmiation-list包含要进行轮换的图片资源,即item子标签
- ‘然后在代码中使用相关的代码进行设置就可以实现相关的动画效果了。
下面是一个简单的例子:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
>
<item
android:drawable="@drawable/dice_1"
android:duration="1000"
/>
<item
android:drawable="@drawable/ic_launcher"
android:duration="1000"
/>
</animation-list>
接下来就是如何使用这一个xml文件来问我们的控件添加动画效果了。
//原理就是先加载frame animation资源,然后设置,最后开始动画。
imageView.setBackgroundResource(R.drawable.animation);
AnimationDrawable animationDrawable=(AnimationDrawable) imageView.getBackground();
animationDrawable.start();
小结:
- 使用Frame Animation虽然简单,但是其没有很大的实用性的价值。
- 只需要对进行轮换的图片资源进行相关的设置就可以实现队中对整体的设置
- 如果直接在XML布局文件中设置其src属性当触发动画时会FC。
- 在动画start()之前要先stop(),不然在第一次动画之后会停在最后一帧,这样动画就只会触发一次。
- 最后一点是SDK中提到的,不要在onCreate中调用start,因为AnimationDrawable还没有完全跟Window相关联,如果想要界面显示时就开始动画的话,可以在onWindowFoucsChanged()中调用start()。(最后三点是别的博友的实验感悟,拿过来与大家一起分享一下!)