android 帧动画

本文深入探讨了Android帧动画的实现,包括使用XML定义帧和通过代码动态创建。介绍了如何在XML中配置帧动画,如设置帧资源和常用属性,并展示了在代码中创建并启动动画的步骤。
摘要由CSDN通过智能技术生成

本文主要讲解Drawable Animation,从xml实现,代码实现两个方面来讲解。

一 xml实现

通过xml来指定需要加载的帧,在res/drawable/目录下,创建一个包含<animation-list>的xml文件,命名为rocket_thrust.xml,如下

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"android:oneshot="true">
    <item android:drawable="@drawable/rocket_thrust1" android:duration="200" />
    <item android:drawable="@drawable/rocket_thrust2" android:duration="200" />
    <item android:drawable="@drawable/rocket_thrust3" android:duration="200" />
</animation-list>

以上的xml指定了3个帧,名为rocket_thrust1rocket_thrust2rocket_thrust3,随后在代码中使用这个animation-list

AnimationDrawable rocketAnimation;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image);
    rocketImage.setBackgroundResource(R.drawable.rocket_thrust);
    rocketAnimation = (AnimationDrawable) rocketImage.getBackground();
}

public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        rocketAnimation.start();
        return true;
    }
    return super.onTouchEvent(event);
}

将这个drawable list设置为控件的背景,随后将其取出并强转为AnimationDrawable,就可以调用start()方法来开始播放了。

xml中常用的属性如下表格:

属性名描述
android:drawable需要加载的drawable对象
android:duration每一帧动画的持续时间
android:oneshot动画是否只执行一次,ture代表真
android:visible动画初始可见状态

二 代码实现

使用代码实现也是比较简单的,首先创建一个AnimationDrawable对象,随后将每帧逐一的添加到该对象中,随后调用start方法就可以开始动画了。代码如下:

mAnimationDrawable = new AnimationDrawable();
mAnimationDrawable.addFrame(mDrawable, 500);
mAnimationDrawable.start();

代码相对比较简单,详细的就不再赘述了。AnimationDrawable的常见方法见下列表格:

方法名描述
addFrame(Drawable frame, int duration)添加帧到动画中,并指定时间
getDuration(int i)获得帧动画的时间
getFrame(int index)获得指定索引的Drawable对象
getNumberOfFrames()获得帧的总数
isRunning()是否处于运行状态
setOneShot(boolean onsShot)设置是否只运行一次
start()开始
stop()停止
setVisible(boolean visible, boolean restart)设置可见度,以及是否要重新开始

帧动画就到这里,下面开始讲解视图动画!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值