欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android动画之帧动画

程序员文章站 2022-03-16 14:07:39
...

   帧动画的实现主要有两种方式,Android中的xml文件以及代码实现。本篇文章主要介绍利用xml文件实现帧布局的方式。

下面是实现帧布局的步骤:

1. 首先在res文件夹下面创建一个新的文件夹,命名为drawable-hdpi,将帧动画要用到图片加载到该文件夹。

2. 在布局文件中设置ImageView控件以及控制帧动画播放的按钮Button控件。

            <Button
                android:id="@+id/frame"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_marginTop="5dp"
                android:paddingBottom="5dp"
                android:paddingTop="5sp"
                android:text="逐帧动画" />
    <ImageView
        android:id="@+id/image"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_gravity="center"
        android:src="@mipmap/ic_launcher">
    </ImageView>

3. drawable文件夹下面创建一个xml文件来生成动画,该xml文件名称为anim_list ,使用animation-list标签,将图片及间隔事件设置出来。oneshot设置是否循环播放,true为只播放一次,false为循环播放

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

    <item
        android:drawable="@drawable/devil"
        android:duration="500"/>
    <item
        android:drawable="@drawable/confused"
        android:duration="500"/>
    <item
        android:drawable="@drawable/cheeky"
        android:duration="500"/>
    <item
        android:drawable="@drawable/angel"
        android:duration="500"/>
    <item
        android:drawable="@drawable/angry"
        android:duration="500"/>
    <item
        android:drawable="@drawable/cool"
        android:duration="500"/>

</animation-list>

4. MainActivity文件中给播放Button按钮设置监听事件。


public class MainActivity extends AppCompatActivity implements OnClickListener{

    private ImageView image;
    private Button frame;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        image = (ImageView) findViewById(R.id.image);
       
        frame=(Button) findViewById(R.id.frame);
        
        frame.setOnClickListener(this);
       
    }

            case R.id.frame:
            {
                image.setImageResource(R.drawable.anim_list);
                AnimationDrawable animationDrawable = (AnimationDrawable) image.getDrawable();
                animationDrawable.start();
                break;

            }


帧动画利用代码的形式实现步骤
    (1)创建图片动画的对象            
      (2) 一帧一帧的添加图片,并且设置显示时间
    (3 设置是否为循环播放 默认的就是只播放一次
    (4)开启动画,或者停止动画

  //动画对象
        mAnimation = new AnimationDrawable();
        for (int i = 1; i < 22; i++) {
            if (i < 10) {
                /*
                获取应用包下的指定资源ID。
                第一个参数为ID名,第二个为资源属性是ID或者是Drawable,第三个为包名。
                 */
                id = getResources().getIdentifier("bomb0" + i, "mipmap", getPackageName());
            } else {
                id = getResources().getIdentifier("bomb" + i, "mipmap", getPackageName());
            }
            //将id装换成drawable对象
            Drawable drawable = getResources().getDrawable(id);
            //添加动画的drawable对象,设置图片播放的间隔时间
            mAnimation.addFrame(drawable, 100);
        }
        //是否只运行一次
        mAnimation.setOneShot(false);
        //给imageView设置动画
        imageView.setImageDrawable(mAnimation);
        mAnimation.start();

详细步骤可以参考     http://blog.csdn.net/dl10210950/article/details/53835892

注意:xml文件生成的动画默认的是循环播放,java代码生成的动画默认是只播放一次