用Android属性动画实现和演示迪士尼动画基本原则
本文将介绍在Android平台上实现和演示迪士尼动画基本准则。
项目开源,GitHub: https://github.com/vhow/animation
说明:
- 演示动画原则的想法源自 Animation Principles for the Web
- 本项目所有的动画都是通过 Android属性动画 APIs 编写。
夸张手法
很多时候,动画需要模拟现实世界中物理的真实动画。但一味拘泥于现实,不免枯燥和乏味。因此,动画的撰写可以大胆夸张,夺人眼目。
跟随和覆盖行为
现实物体会受惯性作用,要模拟现实,就要考虑惯性。《猫和老鼠》等动画中常使用此技巧,以人物奔跑为例:
- 开始奔跑
- 逐渐加速
- 奔跑中身体后倾
- 逐步减速 (受惯性作用)
- 停止,身体归正
预备动作
现实世界中,物体在行动前都有预期行为。例如:
- 小猫在上跳前会下蹲
- 狮子在发起攻击前会俯身蓄力
在编写动画代码时,也可以加入这些预备动作——预告接下来的行为,让用户产生预期。
挤压和拉伸
物体存在重量,也由不同材质组成。在运动过程中会发生挤压和拉伸。《猫和老鼠》中,猫撞墙时会发生扁平形变,就是应用了此准则。
突出显示
舞台上,领舞一般都被突出出来,向前走一步,或者穿着不同的衣服。动画亦是如此,需要突出强调关键元素以吸引用户的注意力。
接续动作与关键动作
开发动画之前,目标对象从初始位置过渡到终止位置,需要事前想好关键位置,也就是所谓的关键帧。这些关键帧定义好之后,动画就可以持续从一个关键帧过渡到另一个关键帧。
缓入缓出
真实世界中,物体从静止→运动,是一个逐渐加速的过程。从运动→静止是一个逐渐减速的过程。动画需要利用贝塞尔曲线,模拟这种状态切换过程。
弧线运动
有生命力的事物,例如老鹰,其移动轨迹往往是曲线,而非直线。动画也要模拟这种弧线运动轨迹,以切近现实。
时间节奏
时间和节奏是动画的灵魂。两个物体,哪怕初始状态、终止状态完全一样,只要节奏不同,其运动效果也会千差万别。
用Android属性动画实现和演示迪士尼动画基本原则的更多相关文章
- html迪士尼网页实现代码
html body> <div> <!-- 导航设置 --> <header> <nav ...
- 用HTML编写迪士尼乐园页面
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/html"><head lang="e ...
- 杂项-公司-百科:华特·迪士尼-un
ylbtech-杂项-公司-百科:华特·迪士尼 华特·迪士尼(Walt Disney,全名Walter Elias Disney,又译沃尔特·迪士尼,1901年12月5日—1966年12月15日),出 ...
- 迪士尼黑科技:爬墙机器人 VertiGo
12 月 30 日,迪士尼研发出的一款爬墙机器人曝光了一段有趣的视频.从视频里可看出这个机器人碰到墙壁时迅速地作出反应爬了上去. 据了解,这个爬墙机器人名叫 VertiGo,由迪士尼研究中心和苏黎世联 ...
- HK游记 Day2迪斯尼(下)
接下来我们要去看狮子王庆典,绕啊绕啊,终于进场了,说实话我对一大帮人扮演动物歌舞表演不是很感冒,静倒是觉得很好看,印象最深的是狮子王的主题曲,还有大象车,长颈鹿车,狮子王车,静举着手机拍视频. 看完表 ...
- Android属性动画完全解析(下)
转载:http://blog.csdn.net/guolin_blog/article/details/44171115 大家好,欢迎继续回到Android属性动画完全解析.在上一篇文章当中我们学习了 ...
- Android属性动画完全解析(上)
Android属性动画完全解析(上) 转载:http://blog.csdn.net/guolin_blog/article/details/43536355 在手机上去实现一些动画效果算是件比较炫酷 ...
- Android 属性动画(二)
当然了属性动画还有一部分的知识点,也能做出很不错的效果,将在本篇博客为您展示~ 1.如何使用xml文件来创建属性动画 大家肯定都清楚,View Animator .Drawable Animator都 ...
- Android 属性动画(Property Animation) 全然解析 (下)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38092093 上一篇Android 属性动画(Property Animatio ...
随机推荐
- js时间戳与时间日期间相互转换
今天在工作中要将获取到的时间转换为时间戳,一时间竟不知道怎么用,于是不得不去查询资料,这里特地做个笔记. 1.将日期转换为时间戳. 要将日期转换为时间戳,首先得先获取到日期,这里可以直接指定日期,或者 ...
- Linux命令之远程下载命令:wget
转自:http://www.cnblogs.com/peida/archive/2013/03/18/2965369.html Linux系统中的wget是一个下载文件的工具,它用在命令行下.对于Li ...
- 如何控制input框!
ENTER键可以让光标移到下一个输入框 只能是中文 屏蔽输入法 只能输入英文和数字 只能是数字 只能显示,不能修改 只能输数字,判断按键的值 function onlyNum() { ...
- 机器学习——kNN(1)基本原理
=================================版权声明================================= 版权声明:原创文章 禁止转载 请通过右侧公告中的“联系邮 ...
- 【编程技巧】NSTimer类的使用
创建一个 Timer + scheduledTimerWithTimeInterval: invocation: repeats: + (NSTimer *)scheduledTimerWithTim ...
- MYSQL ORDER BY Optimization
ORDER BY Optimization 某些情况下,MYSQL可以使用index排序而避免额外的sorting. 即使order by语句列不能准确的匹配index,只要没有index中(不在or ...
- greedy算法(python版)
greedy算法的核心思想是首先计算覆盖面大的部分,然后依次寻找其他覆盖面最大的部分.该算法的使用场景就像他的名字一样,当符合贪婪属性的时候就可以考虑. states_needed = set(['北 ...
- Linux 查找命令汇总
linux下查找命令挺多,本文以列表方式说明which.whereis.locate.find命令的区别: 命令 概述 语法 示例 适用OS 搜索结果 which 在PATH变量指定的路径中,搜索某个 ...
- 使用非java代码编程
使用非JAVA代码 JAVA语言及其标准API(应用程序编程接口)应付应用程序的编写已绰绰有余.但在某些情况下,还是必须使用非JAVA编码.例如,我们有时要访问操作系统的专用特性,与特殊的硬件 ...
- tcpdump 使用
例子: 首先切换到root用户 tcpdump -w aaa.cap -i eth7 -nn -x 'port 9999' -c 1 以例子说明参数: -w:输出到文件aaa.cap ...