前言:
大家好,我是Android白居易,一个神秘的男子,在各种论坛网站中沉沦后,我发现国内太缺少像样点的博客文章了,要么是通篇贴晦涩难懂的代码,要么是复制粘贴,人云亦云。这个风气很不好,于是有了我这一系列的文章,我希望技术可以不要那么枯燥,文章可以不要那么长篇大论,一篇讲清楚一个小主题就好。
下面进入今天的主题:Android动效漫谈(一)动效分类。
动效
在聊动效之前,最重要一点,了解动效的本质是什么,就像学数学,最开始都会学公式的推导过程,这也是我对很多文章不满的一点,学任何一个东西一上来直接贴代码贴API的统一视为耍流氓......
那么,动效是什么,要知道,道可道,非常道......
动效的本质,记得以前下雪的时候和小伙伴进行一个打雪仗的活动,那么以这个活动为举例来说明动效的本质。
小明卷起一个雪球朝小强扔了过去,雪球在空中旋转跳跃,这里雪球在空中进行了一个运动,运动就一定有其运动轨迹,引入Android中就是其运动曲线或者动效曲线,但是啊,咱们Android可并不知道物理世界中的运动规律,所以需要有一个物理引擎,用它来告诉Android物体怎么进行运动才最贴近真实世界,才能让动效体验上最佳。
动效,简单说就是物体的运动,只不过是Android元素的运动,比如一个按钮的运动,一条文本框的运动,一个窗口的运动,都是动效。
动画
聊到动效顺便一提动画,就像聊到伊利,顺便聊聊蒙牛。
这两个东西很容易混杂,动画其目的和动效目的都是用于改善用户操作体验,进行操作上的即时反馈,可以说它俩本是同根生。
那么Android动画是什么,相信大家都看过动画片,动画片就是对一组画面进行播放,电视是固定速率进行播放的,简单说,各种外部素材导入到Android中进行播放就是动画。
物理引擎
刚聊完了动效,聊到了运动,运动就必然有其运动规律,运动规律就是牛顿的运动学定律,物理引擎就负责这个,它需要告诉Android界面中这个球体,怎么运动最自然,在Android界面中进行投篮时这个抛物线在不同的作用力下是什么运动状态才最贴近真实物理规律。
物理引擎实际上不属于Android范畴,这个物理引擎接收外部输入,比如投篮时的作用力,力的方向,力的大小,物体的质量等参数,最终结合数学定律,物理定律进行计算,其结果是返回一条运动轨迹给Android,最终Android的界面元素就沿着这条物理引擎给定的路线进行运动。
通常有一套外部SDK或者框架提供物理引擎计算,应用层开发者只需要关心相关的API是如何使用的。
需要了解的是这个物理引擎最终的作用是用来计算运动曲线,把运动曲线输出给Android系统。
总结
本文章主要从Android动效开始分析,动效是什么,说明了动效的用途实际是改善用户体验,给出用户良好的使用反馈,并对比了动效和动画,进一步深入的指出了动效曲线,以及动效曲线背后的物理引擎。