Android学习|动画
一、动画分类
Android动画按照不同类型分为以下几种:
1.逐帧动画(frame-by-frame animation) : 几张图片进行快速的播放形成的动画
2.补间动画(tweened animation):设置初始值、结束值。中间动态由安卓完成
3.属性动画(property animation):对组件的属性进行改变,从而达到动画的效果
逐帧就是图片叠加显示效果。补间动画与属性动画有些相似,区别在于补间动画可操作属性较少,并且需要java、xml配合,属性动画对属性都能操作,java即可完成
1、逐帧动画
逐帧动画(frame-by-frame animation) : 几张图片进行快速的播放形成的动画
实现逻辑:drawable下创建xml资源,通过animation-list形成动画,然后设置成一个布局(例如RelativeLayout)的背景。再通过java代码获取到动画的 Drawable资源,然后通过其start() 启动动画、stop()停止动画,可配合点击事件完成。
演示
1.1.1、drawable下创建frame.xml,添加animation-list,animation-list添加图片。
参数:duration:一张图片显示的多少毫秒
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/frame1" android:duration="120"></item>
<item android:drawable="@drawable/frame2" android:duration="120"></item>
<item android:drawable="@drawable/frame3" android:duration="120"></item>
<item android:drawable="@drawable/frame4" android:duration="120"></item>
<item android:drawable="@drawable/frame5" android:duration="120"></item>
<item android:drawable="@drawable/frame6" android:duration="120"></item>
<item android:drawable="@drawable/frame7" android:duration="120"></item>
<item android:drawable="@drawable/frame8" android:duration="120"></item>
</animation-list>
1.1.2、activity_main.xml中设置刚才的feame为background(此处使用的是RelativeLayout布局)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rl1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/frame">
</RelativeLayout>
1.1.2、动画的启动和停止
a、获取动画的 Drawable资源
AnimationDrawable anim = (AnimationDrawable) relativeLayout.getBackground();
b、启动动画 :anim.start();
c、 停止动画 :anim.stop();
package com.example.thriddemo_animation_1;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.RelativeLayout;
public class MainActivity extends</