Android 动画实现几种方案

作者:lqh 时间:2022-08-31 02:57:39 

Android 动画实现几种方案

在 Android 的 FrameWork 中,为我们提供三种动画的实现方式:逐帧(Frame)动画、视图/补间动画(View Animation)和属性动画(Property Animation)。由于,这三种动画的实现方式和针对面不一样,应用的范围也有所区别,因此我们需要根据具体的需求来选择正确动画类型。

根据 SDK 中的描述,这三者的功能强大程度为:逐帧动画 < 视图动画 < 属性动画。

一、逐帧动画(Frame Animation)

该动画的方式就是将动画的过程的每一张静态图片都收集起来,然后依次显示这些图片,利用人眼的“视觉停留”的原理,给用户产生动画的效果。

逐帧动画是一种常见的动画形式(Frame By Frame),其原理是在“连续的关键帧”中分解动画动作,也就是在时间轴的每帧上逐帧绘制不同的内容,使其连续播放而成动画。 因为逐帧动画的帧序列内容不一样,不但给制作增加了负担而且最终输出的文件量也很大,但它的优势也很明显:逐帧动画具有非常大的灵活性,几乎可以表现任何想表现的内容,而它类似与电影的播放模式,很适合于表演细腻的动画。例如:人物或动物急剧转身、 头发及衣服的飘动、走路、说话以及精致的 3D 效果等等。

二、视图动画(Tween Animation)

也称为补间(Tween)动画,根据这两个定义可以看出该动画方式的一些特征:

1、该动画方式只是针对于 View 对象实现 view 组件的移动、放大、缩小以及渐变等效果,例如 ImageView、Button 等;

2、实现该动画时,只需要给出两个关键帧中的内容即可,动画中各个过渡帧中的内容由 flash 自动生成。可以理解成望文生义,就是在两点之间插入渐变值来平滑过渡。

由于视图动画在 Android 中是一个 older system,所以还不能对所有的效果进行支持,目前只支持:

1、透明度变化的动画(AlphaAnimation);
2、大小缩放的动画(ScaleAnimation);
3、位置变化的动画(TranslateAnimation);
4、旋转动画(RotateAnimation)。

三、属性动画

为了弥补视图动画的不足,Android 在 3.0 中引入了属性动画。和视图动画专注与视图效果不同,它更专注于对象的属性的变化,通过改变对象的属性而实现动画包括可是属性和其他属性,不论该对象是否可见。例如:你使用视图动画将一个 Button 放大一倍,在界面上的效果可以实现,但是该 Button 的触摸响应区域还是和原来的一样,也就是说,视图动画并不是真正的将该 Button 放大一倍。

属性动画和补间动画类似,不过是真的属性在变动,包括可视属性和其他属性。

补间动画仅仅是可视属性在显示层面的动画,属性的实质并未改动。

一般情况下推荐使用最新的属性动画。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

标签:Android,动画
0
投稿

猜你喜欢

  • Java设计模式七大原则之里氏替换原则详解

    2022-05-22 13:41:10
  • IDEA启动tomcat控制台中文乱码问题的解决方法(100%有效)

    2021-06-25 10:45:23
  • java实现简单猜拳小游戏

    2021-09-01 07:49:46
  • c语言switch反汇编的实现

    2023-06-29 03:38:17
  • SpringBoot使用JWT实现登录验证的方法示例

    2023-09-19 19:12:10
  • java base64编码、解码的三种方式总结

    2022-12-29 22:20:51
  • ehcache模糊批量移除缓存的方法

    2023-01-11 12:30:37
  • jdbc中class.forname的作用

    2023-04-13 00:56:18
  • java 对象的克隆(浅克隆和深克隆)

    2021-06-27 20:43:20
  • 浅谈AnDroidDraw+DroidDraw实现Android程序UI设计的分析说明

    2023-09-28 20:41:51
  • RocketMQ存储文件的实现

    2023-03-16 15:11:27
  • java 如何判断是否是26个英文字母

    2023-11-29 15:51:59
  • Java实现一个顺序表的完整代码

    2023-09-21 01:00:59
  • 老生常谈Java String字符串(必看篇)

    2023-06-20 19:56:20
  • SpringBoot项目中遇到的BUG问题及解决方法

    2022-01-19 14:44:38
  • c#求两个数中最大值的方法

    2021-09-21 15:24:20
  • Java中的final关键字使用方式

    2023-01-16 15:04:25
  • 浅谈c#中config.exe 引发的一些问题

    2022-10-20 07:11:07
  • 解析Spring Mvc Long类型精度丢失问题

    2021-11-06 12:27:37
  • Android实现截屏功能

    2022-10-25 04:36:52
  • asp之家 软件编程 m.aspxhome.com