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

逐帧动画-补间动画

程序员文章站 2022-03-02 08:18:47
...

逐帧动画

xml文件配置方法
*oneshot 配置播放的次数 true : 无线循环 fale :只播放一次

  • item 单个图片选项
  • drawable 图片
  • duration 播放时间
<animation-list
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item android:drawable="@drawable/img00" android:duration="100"></item>
    <item android:drawable="@drawable/img01" android:duration="100"></item>
    <item android:drawable="@drawable/img02" android:duration="100"></item>
    <item android:drawable="@drawable/img03" android:duration="100"></item>
    <item android:drawable="@drawable/img04" android:duration="100"></item>
    <item android:drawable="@drawable/img05" android:duration="100"></item>
    <item android:drawable="@drawable/img06" android:duration="100"></item>
    <item android:drawable="@drawable/img07" android:duration="100"></item>
    <item android:drawable="@drawable/img08" android:duration="100"></item>
    <item android:drawable="@drawable/img09" android:duration="100"></item>
    <item android:drawable="@drawable/img10" android:duration="100"></item>
    <item android:drawable="@drawable/img11" android:duration="100"></item>
    <item android:drawable="@drawable/img12" android:duration="100"></item>
    <item android:drawable="@drawable/img13" android:duration="100"></item>
    <item android:drawable="@drawable/img14" android:duration="100"></item>
    <item android:drawable="@drawable/img15" android:duration="100"></item>
    <item android:drawable="@drawable/img16" android:duration="100"></item>
    <item android:drawable="@drawable/img17" android:duration="100"></item>
    <item android:drawable="@drawable/img18" android:duration="100"></item>
    <item android:drawable="@drawable/img19" android:duration="100"></item>
    <item android:drawable="@drawable/img20" android:duration="100"></item>
    <item android:drawable="@drawable/img21" android:duration="100"></item>
    <item android:drawable="@drawable/img22" android:duration="100"></item>
    <item android:drawable="@drawable/img23" android:duration="100"></item>
    <item android:drawable="@drawable/img24" android:duration="100"></item>
</animation-list>

代码中调用

*第一种方法
AnimationDrawable drawable =  (AnimationDrawable) getResources().getDrawable(R.drawable.shot);
                ivView.setBackground(animationDrawable1);
drawble.start();

*第二种方法
ivView.setBackgroundResource(R.drawable.shot);
AnimationDrawable drawable = (AnimationDrawable) ivView.getBackground();
drawable.start();

不通过布局,直接在代码中实现动画

AnimationDrawable drawable = new AnimationDrawable();
drawable.addFrame(getResources().getDrawable(R.drawable.img00),100);
drawable.addFrame(getResources().getDrawable(R.drawable.img06),100);
drawable.addFrame(getResources().getDrawable(R.drawable.img07),100);
ivView.setBackground(drawable);
drawable.start();

补间动画

*平移动画
*缩放动画
*旋转动画
*透明度动画

以下的属性是上面四种动画都有的属性:

android:duration="3000" // 动画持续时间(ms),必须设置,动画才有效果
android:startOffset ="1000" // 动画延迟开始时间(ms)
android:fillBefore = “true” // 动画播放完后,视图是否会停留在动画开始的状态,默认为true
android:fillAfter = “false” // 动画播放完后,视图是否会停留在动画结束的状态,优先于fillBefore值,默认为false
android:fillEnabled= “true” // 是否应用fillBefore值,对fillAfter值无影响,默认为true
android:repeatMode= “restart” // 选择重复播放动画模式,restart代表正序重放,reverse代表倒序回放,默认为restart|
android:repeatCount = “0” // 重放次数(所以动画的播放次数=重放次数+1),为infinite时无限重复
android:interpolator = @[package:]anim/interpolator_resource // 插值器,即影响动画的播放速度

平移动画

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:toXDelta="500"
    android:fromXDelta="0"
    android:toYDelta="1000"
    android:fromYDelta="0"
    android:duration="3000">
</translate>

平移动画实现自身抖动效果
Animation shake = new TranslateAnimation(Animation.RELATIVETOSELF, 0f, Animation.RELATIVETOSELF, 0.01f, Animation.RELATIVETOSELF, 0f, Animation.RELATIVETOSELF, 0f);
shake.setDuration(1000);
shake.setInterpolator(new CycleInterpolator(10));
findViewById(R.id.btn_four).startAnimation(shake);

缩放动画

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXScale="1"
    android:toXScale="0.5"
    android:fromYScale="1"
    android:toYScale="0.5"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="2000"
    android:fillAfter ="true">
</scale>

旋转动画

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:toDegrees="361"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="3000"
    android:repeatCount="infinite">
</rotate>

透明度动画

<?xml version="1.0" encoding="utf-8"?>
<alpha
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="1"
    android:toAlpha="0.5"
    android:duration="2000"
    android:repeatCount="2"
    android:repeatMode="reverse">
</alpha>

动画集合

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:fromAlpha="1"
        android:toAlpha="0.5"
        android:duration="2000"
        android:repeatCount="2"
        android:repeatMode="reverse">
    </alpha>
    <rotate android:fromDegrees="0"
        android:toDegrees="360"
        android:pivotY="50%"
        android:pivotX="50%"
        android:duration="2000"
        android:repeatCount="infinite">
    </rotate>
    <scale
        android:fromXScale="1"
        android:toXScale="0.5"
        android:fromYScale="1"
        android:toYScale="0.5"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="2000"
        android:repeatCount="infinite">
    </scale>
    <translate
        android:toXDelta="1000"
        android:fromXDelta="0"
        android:toYDelta="0"
        android:fromYDelta="0"
        android:duration="5000">
    </translate>
</set>