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

Android动画机制总结笔记--逐帧动画 FrameAnimation篇

程序员文章站 2022-03-28 17:02:35
...

注意:本篇文章是本人阅读关于Android动画的文章所写下的总结,方便以后查阅,所有内容非原创,侵权删。

本篇文章内容来自于

  1. Android高级进阶 顾浩鑫
  2. Android自定义控件三部曲文章索引之动画篇

目录

2.逐帧动画 FrameAnimation/DrawableAnimation

2.逐帧动画 FrameAnimation/DrawableAnimation

运用场景:设计师给出一系列状态不断变化的图片,开发者可以指定每一帧对应的图片和持续的时间,就可以开始播放动画。

实现方式分为:XML实现+代码实现

XML实现

1.将图片资源放在res/drawable里
2.在res/drawable中新建帧动画(直接new drawable resource file 即可)

<?xml version="1.0" encoding="utf-8"?>
<animation-list 
xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false" >
    <item
        android:drawable="@drawable/a_0"
        android:duration="100" />
    <item
        android:drawable="@drawable/a_1"
        android:duration="100" />
    <item
        android:drawable="@drawable/a_2"
        android:duration="100" />
</animation-list>

android:oneshot="false" 用来控制动画是否循环播放
android:duration="100"指定每一帧的播放持续时间

3.播放帧动画

ImageView iv_frame_show = findViewById(R.id.iv_frame_show);
//播放动画
iv_frame_show.setImageResource(R.drawable.anim_frame);
AnimationDrawable drawable = (AnimationDrawable) iv_frame_show.getDrawable();
drawable.start();
code代码实现

1.将图片资源放在res/drawable里
2.代码实现

ImageView iv_frame_show = findViewById(R.id.iv_frame_show);
//设置+播放动画
AnimationDrawable animationDrawable = new AnimationDrawable();
for (int i = 1; i <= 5; i++) {
  int id = getResources().getIdentifier("pic" + i, "drawable", getPackageName());
  Drawable drawable1 = getResources().getDrawable(id);
  animationDrawable.addFrame(drawable1, 120);
}
iv_frame_show.setBackgroundDrawable(animationDrawable);
animationDrawable.start();