帧(Frame)动画



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


<? xml version = "1.0" encoding = "utf-8" ?>
< animation-list xmlns: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. 循环获取每一帧持续时间,并累加

// 获取动画持续时间 单帧相加
        int numberOfFrames = numberAnimation .getNumberOfFrames();
        for ( int i = 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值