美文网首页
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