美文网首页
Android 动画

Android 动画

作者: 嘿_叫我小王 | 来源:发表于2020-10-20 23:16 被阅读0次

首先,我们先来一个大方向的总结:

image.png

接下来,将里面逐个讲解

帧动画

1.定义

即图形以一帧一帧的形式播放的动画,像gif一样的效果

  1. 作用对象

视图控件(View)
如Android的TextView、Button、imageView等等
不可作用于View组件的属性,如:颜色、背景、长度等等

  1. 原理

将动画拆分为 帧 的形式,且定义每一帧 = 每一张图片
帧动画的本质:按序播放一组预先定义好的图片

4.使用

步骤一:将动画分解成一张一张照片,存入drawable(如果本身是一个gif图,可找gif分解工具)
步骤二:启动动画(xml和java代码都可)

个人认为xml更简单,就来讲这个吧

  1. 在res/anim的文件夹里创建动画效果.xml文件 (举例子:dh.xml)
    2.设置动画资源
<?xml version="1.0" encoding="utf-8"?>
<animation-list
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="true" // 设置是否只播放一次,默认为false
    >

// item = 动画图片资源;duration = 设置一帧持续时间(ms)
    <item android:drawable="@drawable/a0" android:duration="100"/>
    <item android:drawable="@drawable/a1" android:duration="100"/>
    <item android:drawable="@drawable/a2" android:duration="100"/>
    <item android:drawable="@drawable/a3" android:duration="100"/>
    <item android:drawable="@drawable/a4" android:duration="100"/>
    <item android:drawable="@drawable/a5" android:duration="100"/>
    <item android:drawable="@drawable/a6" android:duration="100"/>
    <item android:drawable="@drawable/a7" android:duration="100"/>
    <item android:drawable="@drawable/a8" android:duration="100"/>
    <item android:drawable="@drawable/a9" android:duration="100"/>
    <item android:drawable="@drawable/a10" android:duration="100"/>
    <item android:drawable="@drawable/a11" android:duration="100"/>
    <item android:drawable="@drawable/a12" android:duration="100"/>
    <item android:drawable="@drawable/a13" android:duration="100"/>
    <item android:drawable="@drawable/a14" android:duration="100"/>
    <item android:drawable="@drawable/a15" android:duration="100"/>
    <item android:drawable="@drawable/a16" android:duration="100"/>
    <item android:drawable="@drawable/a17" android:duration="100"/>
    <item android:drawable="@drawable/a18" android:duration="100"/>
    <item android:drawable="@drawable/a19" android:duration="100"/>
    <item android:drawable="@drawable/a20" android:duration="100"/>
    <item android:drawable="@drawable/a21" android:duration="100"/>
    <item android:drawable="@drawable/a22" android:duration="100"/>
    <item android:drawable="@drawable/a23" android:duration="100"/>
    <item android:drawable="@drawable/a24" android:duration="100"/>
    <item android:drawable="@drawable/a25" android:duration="100"/>
</animation-list>

3.启动动画


public class FrameActivity extends AppCompatActivity {
    private Button btn_startFrame,btn_stopFrame;//开始结束动画的按钮
    private ImageView iv;
    private AnimationDrawable animationDrawable;

        iv = (ImageView) findViewById(R.id.iv);
        btn_startFrame = (Button) findViewById(R.id.btn_startFrame);
        btn_stopFrame = (Button) findViewById(R.id.btn_stopFrame);


        <-- 开始动画 -->
        btn_startFrame.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                iv.setImageResource(R.drawable.knight_attack);
                // 1. 设置动画
                animationDrawable = (AnimationDrawable) iv.getDrawable();
                // 2. 获取动画对象
                animationDrawable.start();
                // 3. 启动动画
            }
        });
        //停止动画
        btn_stopFrame.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                
                iv.setImageResource(R.drawable.knight_attack);
                // 1. 设置动画
                animationDrawable = (AnimationDrawable) iv.getDrawable();
                // 2. 获取动画对象
                animationDrawable.stop();
                // 3. 暂停动画
            }
        });

    }
}

补间动画

使用方法

属性动画

工作原理

在一定时间间隔内,通过不断对值进行改变,并不断将该值赋给对象的属性,从而实现该对象在该属性上的动画效果

详细讲解属性动画

相关文章

网友评论

      本文标题:Android 动画

      本文链接:https://www.haomeiwen.com/subject/jbmjmktx.html