Android播放图片动画

时间:2023-03-08 16:01:52
Android播放图片动画

1、布局文件中添加ImageView

<ImageView
android:id="@+id/iv_fan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/f1" />

//注意:如果不是手写的代码,即拖动进布局的ImageView需要修改android:src   改成android:background,否则无法播放!

2、res文件夹下添加anim文件夹,用来存放<animation-list>

  在anim文件夹下创建一个名称为fan_list的xml文件

  右键anim文件夹->new->Android XML File进入选择界面

  Resource Type: 选择Drawable

  Project: 自己的工程目录,通常情况下程序自己已经匹配好了,不用配置

  File:   xml文件的名称

  Root Element:  选择Animation-list

  选择Finish 完成创建

3、创建完成文件会出现在Drawable文件夹下,没关系,复制粘贴到anim文件夹下即可

  编辑xml文件,创建好的xml文件通常只带有一个头文件和一个标签

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >

//在此处填写数据
</animation-list>

  填写数据的时候,android不会给出提示,所以需要记住

  fan_list文件内容如下:

  <?xml version="1.0" encoding="utf-8"?>
  <animation-list xmlns:android="http://schemas.android.com/apk/res/android" >

  <item
  android:drawable="@drawable/f1"
  android:duration="100"/>
  <item
  android:drawable="@drawable/f2"
  android:duration="100"/>
  <item
  android:drawable="@drawable/f3"
  android:duration="100"/>
  <item
  android:drawable="@drawable/f4"
  android:duration="100"/>
  <item
  android:drawable="@drawable/f5"
  android:duration="100"/>
  <item
  android:drawable="@drawable/f6"
  android:duration="100"/>
  <item
  android:drawable="@drawable/f7"
  android:duration="100"/>
  <item
android:drawable="@drawable/f8"
android:duration="100"/>

</animation-list>

    其中android:drawable是需要播放的图片数据,程序播放的时候会从上到下依次播放

    android:duration 持续时间,每张图片显示的时间,单位是ms

    这两个属性必须填写,不然无法播放

4、在程序中引用

public void InitView(){

  iv_fan = (ImageView) findViewById(R.id.imageView1);//实例化控件
  iv_fan.setBackgroundResource(R.anim.fan_list);//设置播放数据
  final AnimationDrawable anim = (AnimationDrawable) iv_fan//使用AnimationDrawable控制数据的播放和暂停
  .getBackground();
  iv_fan.setOnClickListener(new OnClickListener() {

  @Override
  public void onClick(View v) {

      anim.setOneShot(true);//设置只播放一次,false无限循环播放
      anim.start();//播放

    }
  });

}