前言
在Android应用开发中我们每天都在接触动画(Activity开、关,页面滑动、点击按钮等都有动画效果),但入门容易,真正做好很难。如果要把效果做得自然、看上去很爽需要你有一定的美感。如果要把效果做得足够流畅,你需要深入研究动画,弄懂其中的细节和原理。
1
实现动画效果的几种方式
1
补间动画
补间动画即开发者只需要指定开始、结束的关键帧,动画变化的“中间帧”则由系统根据补间动画加速器算法计算补齐。补间动画包括旋转(RotateAnimation)、透明(AlphaAnimation)、位移(TranslateAnimation)和缩放(ScaleAnimation)。补间动画的使用有如下几个特点:
2
帧动画
帧动画是一帧一帧的显示动画效果。创建帧动画除了通过在xml中用animation-list作为根节点、item定义每一帧要显示的图片之外,也可以用Java代码的形式来创建帧动画。帧动画需要用到的核心类是AnimationDrawable。
帧动画的特点是:
3
属性动画
属性动画是在Android 3.0开始引入的一种动画模式(如果想在Android 3.0之前的版本中使用属性动画,可以引用JakeWharton开源的NineOldAndroids),有了属性动画,可以考虑再也不使用补间动画和帧动画了,它功能强大、使用灵活,强烈建议在实际编码中使用属性动画。
关于属性动画的介绍网上已经有很多优秀的技术文章,比如郭霖的Android属性动画完全解析(上),初识属性动画的基本用法、Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法和Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法,所以不再赘述。
4
GIF
GIF是一种图片格式,它分为静态GIF和动画GIF两种,扩展名为.gif,是一种压缩位图格式,支持透明背景图像,适用于多种操作系统,“体型”很小,网上很多小动画都是GIF格式。其实GIF是将多幅图像保存为一个图像文件,从而形成动画,最常见的就是通过一帧帧的动画串联起来的搞笑gif图,所以归根到底GIF仍然是图片文件格式。但GIF只能显示256色。
GIF有天然的劣势,图片质量很低,有很多应用的Splash界面会直接播放gif格式的文件,避免通过xml和代码实现起来过于复杂,github上优秀的GIF开源库有:GifView和android-gif-drawable。
5
视频
有很多应用的引导界面是直接播放的视频,特别是一些大型的游戏,反编译它的代码可以看到,就是一个视频文件。视频文件在分辨率适配上会比较麻烦,制作成本也比较大。
6
SVG
SVG是可缩放矢量图形,他是基于可扩展标记语言,用于描述二维矢量图形的一种图形格式。它严格遵从XML语法,并用文本格式的描述性语言来描述图像内容,因此是一种和图像分辨率无关的矢量图形格式。SVG格式具备目前网络流行的jpg和png等格式无法具备的优势:可以任意放大图形显示,但绝不会以牺牲图像质量为代价;可在SVG图像中保留可编辑和可搜寻的状态;平均来讲,SVG文件比其它格式的图像文件要小很多,因而下载也很快。关于SVG更为详细的介绍可以参考这篇文章:Android实现炫酷SVG动画效果。
7
其他
还可以通过自定义类,用定时器给ImageView更换背景图片的方式实现动画;如果使用到了游戏引擎,游戏引擎中对动画的渲染效率有增强,动画效果会很流畅。
2
使用动画过程中遇到过哪些坑
3
动画优质开源项目推荐
4
参考资料
小贴士
本文版权归Open软件开发小组所有,如需转载请联系主编申请授权。