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

android 逐帧动画和补间动画

程序员文章站 2022-03-25 14:56:43
...

逐帧动画

逐帧动画就是快速播放单张图片因为视觉暂停的原因看起看就是动画效果。

  1. 准备好所需要的图片资源,在drawable目录下创建一个xml文件,利用animation-list配置好动画图片。

fairy.xml

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
<!--    duration: 60ms播放一张-->
    <item android:drawable="@drawable/pic1" android:duration="60"/>
    <item android:drawable="@drawable/pic2" android:duration="60"/>
    <item android:drawable="@drawable/pic3" android:duration="60"/>
</animation-list>
  1. 将fairy.xml设置为某一个布局的背景
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/fairy"
        android:orientation="vertical"
        android:id="@+id/linearlayout">
    </LinearLayout>
  1. 获取该动画对象,调用它的start,stop方法来控制它的播放与暂停
        // 获取动画资源所在的布局对象
        LinearLayout layout=findViewById(R.id.linearlayout);
        // 强制类型转换为动画对象
        AnimationDrawable anim= (AnimationDrawable) layout.getBackground();
        // 设置点击事件
        layout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (click){
                    anim.start();
                    click=false;
                }else {
                    anim.stop();
                    click=true;
                }
            }
        });

补间动画

  1. 透明度渐变动画
  • 在anim文件夹下配置好动画效果,主要是动画的持续时间,起始和结束透明度。
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!--    指定起始透明度和结束透明度,动画持续时间-->
    <alpha android:fromAlpha="0" android:toAlpha="1" android:duration="4000"/>
</set>
  • 准备好一张图片
<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/imageview"
    android:scaleType="centerInside"
    android:src="@drawable/meihua13"/>
  • 加载动画资源并播放
        ImageView imageView=findViewById(R.id.imageview);
        // 利用动画加载工具加载动画资源
        Animation alpha= AnimationUtils.loadAnimation(MainActivity.this, R.anim.alpha);

        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    imageView.startAnimation(alpha);
            }
        });
  1. 旋转动画
    旋转动画的配置有几个重要属性如下
    <rotate
        android:fromDegrees="0"
        android:toDegrees="720"
        android:duration="4000"
        android:pivotX="50%"
        android:pivotY="50%" />

fromDegrees开始角度,toDegrees结束角度,duration持续时间,pivotx,pivoty旋转的x和y轴,这里50%是指图片的一半。
其他的加载和播放方式和渐变动画相同。

  1. 缩放动画
    <scale android:fromXScale="1"
        android:fromYScale="1"
        android:toXScale="2"
        android:toYScale="2"
        android:pivotX="20%"
        android:pivotY="30%"
        android:duration="3000"/>

fromXScale: x原始比例,1表示不缩放,原始大小
fromYScale: y原始比例,1表示不缩放,原始大小
toXScale: x结束比例,2表示放大为原始2倍大小
toYScale: y结束比例,2表示放大为原始2倍大小
pivotX,pivotY,指定缩放中心。

  1. 平移动画
    <translate android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="0"
        android:toYDelta="200"
        android:duration="3000"/>

fromXDelta,fromYDelta 起始点的坐标
toXDelta,toYDelta结束点的坐标
四种动画的加载和播放方式都是相同的。

相关标签: Android android