1. 介绍
Drawable Animation 可以实现依次加载一组 Drawable 资源, 它和早期的电影一样 , 加载一组不同的图片,然后像胶卷一样播放就形成了动画.
可以使用 ** AnimationDrawable
**类的相关API 在代码中动态加载动画帧数据. 最容易实现的方式是使用一个单独的XML来罗列出播放动画需要的Drawable图片资源 . 这个XML文件要存放在res/drawable
路径下.
2. XML实现方式.
2.1 在 res/drawable/
路径下创建 wifi_wave.xml
文件.
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true">
<item android:drawable="@drawable/wifi1" android:duration="200" />
<item android:drawable="@drawable/wifi2" android:duration="200" />
<item android:drawable="@drawable/wifi3" android:duration="200" />
</animation-list>
- 根节点使用 :
<animation-list>
1.1android:oneshot="true"
动画是否只执行一次.- 每一帧动画使用一个
<item>
节点.
2.1android : drawable
图片资源引用.
2.2android:duration
当前图片资源的播放时间.
2.2 引用
AnimationDrawable wifiAnimation;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView wifiImage = (ImageView) findViewById(R.id.wifi_wave);
wifiImage.setBackgroundResource(R.drawable.wifi_wave);
wifiAnimation = (AnimationDrawable) rocketImage.getBackground();
}
public void btnClicked(View view){
// 开始动画.
wifiAnimation.start();
}
注意尽量不要在
onCreate()
中调用start()
方法. 因为此刻资源文件可能还没有完全加载完成 . 如果想在一开始就进行动画可以考虑在 onWindowFocusChanged()回调中调用start()
.