一只在屏幕上坐立不安的精灵,背后是Android动画技术的巧妙驱动。
Android动画技术面面观
在Android中,动画的实现主要有三种方式:逐帧动画、补间动画和属性动画。每种方式都有其适用场景和特点。
逐帧动画就像传统的翻书动画,通过快速连续播放一系列静态图像来创造出运动幻觉。这种动画最适合复杂的、难以通过代码计算的运动效果,比如我们即将实现的“忐忑的精灵”。
补间动画则是通过定义动画的起始状态和结束状态,由系统自动计算中间过渡帧。它包括透明度渐变动画、旋转动画、缩放动画和平移动画等。
属性动画是Android 3.0引入的更强大的动画系统,它可以改变任何对象的属性,不仅限于View对象,提供了更大的灵活性和控制力。
忐忑的精灵:完整实现步骤
准备工作:创建精灵工作表
首先,我们需要一个精灵工作表——这是包含动画所有帧的单个图像文件。想象一下小时候玩的翻书动画,每一页上的小变化在快速翻动时就变成了流畅的动画。
精灵工作表也是同样的道理,它将动画的所有帧按顺序排列在一张图片。
在我们的“忐忑的精灵”例子中,精灵工作表包含了精灵坐立不安的各种姿态:正常状态、眨眼、稍微晃动和大幅晃动。
方法一:使用XML实现逐帧动画
1. 创建动画资源文件
在res/anim目录下创建fairy.xml文件:
<?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/fairy_normal" android:duration="200" />
<item android:drawable="@drawable/fairy_blink" android:duration="60" />
<item android:drawable="@drawable/fairy_normal" android:duration="300" />
<item android:drawable="@drawable/fairy_slight_wiggle1" android:duration="100" />
<item android:drawable="@drawable/fairy_slight_wiggle2" android:duration="100" />
<item android:drawable="@drawable/fairy_normal" android:duration="400" />
<item android:drawable="@drawable/fairy_big_wiggle1" android:duration="8

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



