帧(Frame)动画

来源:互联网 发布:直发夹板 知乎 编辑:程序博客网 时间:2024/05/20 18:43


1.定义方法:res/drawable 文件夹下

定义方法:在 <animation-list.../> 元素中使用 <item.../> 子元素定义动画的全部帧,并指定各帧的持续时间即可。
语法格式:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot=["true" | "false"]>
<item android:drawable="@[package:]drawable/drawable_resource_name" android:duration="integer" />
</animation-list>



android:drawable 当前帧引用的drawable资源
android:duration 当前帧显示的时间(毫秒为单位)
android:oneshot 如果为true,表示动画只播放一次停止在最后一帧上,如果设置为false表示动画循环播放。
android:visible 规定drawable的初始可见性,默认为flase
2016/10/31 23:35


<?xmlversion="1.0"encoding="utf-8"?>
<animation-listxmlns:android="http://schemas.android.com/apk/res/android"
   android:oneshot="false">
    <!--每间隔50ms换一张图片--->
    <item
       android:drawable="@drawable/rocket3"
       android:duration="50"/>
    <item
       android:drawable="@drawable/rocket4"
       android:duration="50"/>
    <item
       android:drawable="@drawable/rocket5"
       android:duration="50"/>
    <item
       android:drawable="@drawable/rocket6"
       android:duration="50"/>
 
</animation-list>


xml文件
使用方法:
1.在res/drawable 资源文件中定义好xml文件
2.在布局文件中应用该文件(background,src)
3.在java代码中启动动画

ImageView iv = (ImageView) findViewById(R.id.iv);
AnimationDrawable anim = (AnimationDrawable) iv.getBackground();
anim.start();



扩展:获取动画时间 在java代码中,获取动画运行时间:
  1. 获取所有帧数量
  2. 循环获取每一帧持续时间,并累加

// 获取动画持续时间单帧相加
       intnumberOfFrames =numberAnimation.getNumberOfFrames();
       for (inti = 0;i <numberOfFrames;i++) {
            numberTime +=numberAnimation.getDuration(i);
        }



java代码直接生成帧动画:
  1. 创建 AnimationDrawable 对象。
  2. 调用方法向动画中添加帧:
    1. addFrame(Drawable frame, int duration) :每调用一次该方法,就向 <animation-list.../> 元素中添加一个 <item.../> 子元素。
  3. 用 ImageView 把 AnimationDrawable 显示出来——通常把 AnimationDrawable 设成 ImageView 的背景即可。
  4. AnimationDrawable 代表的动画默认是不播放的,必须在程序中启动动画的播放。
    1. start() :开始播放动画。
    2. stop() :停止播放动画。







0 0
原创粉丝点击