android 动画中的比较重要的一种动画就是帧动画,如名字所表达的意思就是把画面一帧一帧的放,有点类似电视播放画面那样。
下面是个用了两种形式实现了帧动画:
首先在xml中定义个ImageView。
<ImageView
android:id="@+id/loadingPic"
android:layout_margin="10dp"
android:layout_width="120dp"
android:layout_height="120dp" />
然后再activity中绑定动画:
方法一,运用xml来做动画内容
ImageView imageviewpic= (ImageView) findViewById(R.id.loadingPic);
imageviewpic.setBackgroundResource(R.drawable.donghua);
final AnimationDrawable animationDrawable= (AnimationDrawable) imageviewpic.getBackground();
animationDrawable.start();
imageviewpic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (animationDrawable.isRunning()){
animationDrawable.stop(); //停止
}else{
animationDrawable.start(); //开始
}
}
});
其中的R.drawable.donghua 是个xml的drawable如下,android:oneshot=”false”时循环播放,为true时停在最后一帧。
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false" >
<item android:drawable="@drawable/pic2" android:duration="100"></item>
<item android:drawable="@drawable/pic3" android:duration="100"></item>
<item android:drawable="@drawable/pic4" android:duration="100"></item>
<item android:drawable="@drawable/pic5" android:duration="100"></item>
<item android:drawable="@drawable/pic6" android:duration="100"></item>
<item android:drawable="@drawable/pic7" android:duration="100"></item>
<item android:drawable="@drawable/pic8" android:duration="100"></item>
<item android:drawable="@drawable/pic9" android:duration="100"></item>
<item android:drawable="@drawable/pic10" android:duration="100"></item>
<item android:drawable="@drawable/pic11" android:duration="100"></item>
<item android:drawable="@drawable/pic12" android:duration="100"></item>
<item android:drawable="@drawable/pic13" android:duration="100"></item>
<item android:drawable="@drawable/pic14" android:duration="100"></item>
</animation-list>
方法二.动态加入动画内容
ImageView imageviewpic= (ImageView) findViewById(R.id.loadingPic);
final AnimationDrawable animationDrawable= new AnimationDrawable();
for(int i =2;i<15;i++){
//第一个 就是我们的资源名称(图片名)
//第二个 就是我们存放图片的文件夹drawable
//第三个 包名也可以用Context的getPackageName返回应用程序的包名
int id = getResources().getIdentifier( "pic"+i, "drawable",this.getPackageName());
Log.d("ID:" + id);
animationDrawable.addFrame(getResources().getDrawable(id), 200);
}
//设置手否重复播放,false为重复
animationDrawable.setOneShot(false);
imageviewpic.setImageDrawable(animationDrawable);
imageviewpic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (animationDrawable.isRunning()){
animationDrawable.stop();
}else{
animationDrawable.start();
}
}
});