动画的使用—Drawable Animation

Drawable Animation能够称为帧动画,由于它是经过每次播放一帧Drawable资源实现的。java

Drawable Animation算不上真正意义上的动画,由于它的内部实现是经过定时发送消息更新一个Drawable,android

例如一个背景。因此使用这个动画的时候更像是使用一个背景资源,只不过更新背景的动做不用咱们本身进行。app

也许正是由于这个缘由,android官方建议咱们将这个动画资源放在drawable目录。ide

 

使用帧动画很是之简单,只须要在drawable目录定义个xml文件,布局

使用animation-list标签包裹全部组成这个动画的图片文件,设置播放速率。动画

而后在java代码中使用。spa

定义xml文件code

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <!--每个 item 中包括一帧组成动画的图片 -->
    <item android:drawable="@drawable/a01" android:duration="80" />
    <item android:drawable="@drawable/a02" android:duration="80" />
    <item android:drawable="@drawable/a03" android:duration="80" />
    <item android:drawable="@drawable/a04" android:duration="80" />
    <item android:drawable="@drawable/a05" android:duration="80" />
    <item android:drawable="@drawable/a06" android:duration="80" />
    <item android:drawable="@drawable/a07" android:duration="80" />
    <item android:drawable="@drawable/a08" android:duration="80" />
    <item android:drawable="@drawable/a09" android:duration="80" />
    <item android:drawable="@drawable/a10" android:duration="80" />
    <item android:drawable="@drawable/a11" android:duration="80" />
    <item android:drawable="@drawable/a12" android:duration="80" />
    <item android:drawable="@drawable/a13" android:duration="80" />
</animation-list>

这样就定义好了咱们的动画资源,以后就是在activity中调用xml

package com.whathecode.drawableanimation;

import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.MotionEvent;
import android.widget.ImageView;

public class MainActivity extends ActionBarActivity {

    private AnimationDrawable ad;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /**
         * 主布局文件实际上只是一个相对布局和一个ImageView
         */
        setContentView(R.layout.activity_main);
        
        ImageView img = (ImageView) findViewById(R.id.ali);
        
        /**
         * 获取动画资源,由于他就是一个背景资源
         * 因此能够使用getBackground获取,而后强制转换成AnimationDrawable
         * 也能够这样获取动画资源
         * ad = (AnimationDrawable) getResources().getDrawable(R.drawable.motion);
         * img.setBackgroundDrawable(ad);
         */
         img.setBackgroundResource(R.drawable.motion);
         ad = (AnimationDrawable)img.getBackground();
    }
    
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch(event.getAction())
        {
        case MotionEvent.ACTION_UP:
            //播放动画
            ad.start();
            return true;
        }
        return super.onTouchEvent(event);
    }
}

这些,就是AnimationDrawable的所有blog

AnimationDrawable

相关文章
相关标签/搜索