为什么用问号?因为有点不知道写什么了。。。这周真的很忙,没有太多的时间来学习,就吃吃老本吧。
首先,先谈谈android自己的动画机制。
我们知道,继承Animation需要实现一个方法,applyTransformation (interpolatedTime, Transformation t)。我们可以通过时间t来确定对我们的view做什么操作!这个是基本功,我不想多做解释了。
那系统是如何绘制出动画的呢?为什么我们使用了anim.start()我们就可以得到想要的动画呢?
我大概讲一下系统是怎么做的:
一、代码位置,2D的绘画机制是ViewGroup包含几个View,组成树状结构。在Viewgroup的代码中,你可以找到动画绘制的代码,在Viewgroup里的dispatchDraw方法中。
二,实现,在ViewGroup dispatchDraw中,child.getAnim.isStart()? 如果是,那么,记住
startTime,然后新建Transformation传入这个child的Animation中(就是传入Animation的applyTransformation中),得到Animation的“目的”(平移?缩小?旋转?),好了,得到“目的”后,对dispatchDraw的Canvas作相应变化(比如平移,那么就使用canvas.translate),最后,在draw上我们的child!(其实ViewGroup在没有动画时候,就只作draw child这件事而已)。
三、interpolatedTime怎么做出来的?animation都有自己的duration,在有了上面一步的startTime后,我们每次执行dispatchDraw的时候,可以获得当前时间nowTime(都是毫秒级别),那么我们使用(nowTime - startTime) / duration就可以得到这个float形式的百分比时间了percent。但是要得到interpolatedTime还需要将这个percentTime传入一个interpolator中,然后经过interpolator计算得出。(这就是加速或者减速变换的原理,当然还可以有更复杂的数学变换)
四、有什么用?知道了android的动画架构,我们就可以知道:1.为啥我的view在做animation的时候会有一部分不现实呢,好像被截掉了?根据上面分析,你这个做动画的view所依附的ViewGroup是不是太小了?这个时候,增加ViewGroup的padding是一个好办法。2.我们还可以自己根据这个架构,做动画。比如在onDraw中,自己算interpolatedTime,是否还需要动画?是,invalidate(),继续。
其实,动画就是每次刷新把图像画出来就行,也就两个重点,如何画?怎么刷新?
android怎么刷新?就是在dispatch中,如果需要动画,那么在每次绘画后,会继续call一次invalidate方法。android如何画?就是使用interpolatedTime和Transformation的机制来画出动画。
接下来,我来介绍一种android中自己做的动画方法。举个例子,平移。首先,如何画?使用Scroller类,来辅助计算,设定最终的x y值,start后,就可以在任一时间问它要现在到哪了(x和y值)!需要做动画的View,需要放出接口,来供控制者在得到xy值后可以改变View的属性。怎么刷新?自己做一个Runnable(一般嵌在View中可以直接使用post方法),留出接口,供动画开启(如scrollTo(x,y))。动画开启后,在run()中加入如何画的部分,知道怎么画后,改变View别且调用invalidate(),如果动画未结束,再次post自己,到达到持续动画的效果。如果结束,则remove自己,结束循环。
好了,动画做出了,当然还有很多方法,只要解决上述两个问题即可。如3D中每次绘制结束后使用swapBuffer来解决怎么刷新。如何画这个问题,不同动画,方法不同罢了。
分享到:
相关推荐
这是一个PPT文件,有些内容是来自网上,再此感谢,有些内容是我的原创。
微服务高可用方案
藏经阁-【云栖精选7月刊】抛开晦涩的算法、模型,让我们来谈谈互联网架构.pdf
前不就发帖与大家一起讨论了一下《谈谈怎样架构你的单片机程序》,发现真正使用架构的并不都,而且这类书籍基本没有。 本人经过摸索实验,并总结,大致应用程序的架构有三种: 1. 简单的前后台顺序执行程序,这类...
企业应用架构是指一整套软件系统的构建...完整的企业架构(EA,EnterpriseArchitecture)分析构建,包括业务架构、应用架构、技术架构、数据架构,本文聚焦应用架构,更加关注软件系统设计与公司经营管理的关系。不论是
Web App虽然解决了“快速开发”和“低成本”两个复杂度问题,但随着业务的发展,Web App的劣势逐渐成为了主要的复杂度问题,主要体现在:移动设备的发展速度
谈谈大型企业网络架构知识.pdf
在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前,我们先讨论架构的概念定义,概念是人认识这个世界的基础,并用来沟通的...
系统架构+ORM+设计模式 系统架构+ORM+设计模式
01 陈康贤-阿里-阿里直播平台的架构演进 02 田琪-京东-京东大规模高访问量...07 王津银-优维科技-谈谈技术架构的运维治理 08-高保庆-电信运营商级安全高可用的互联网帐号认证体系技术架构实践 09 中小企业架构设计之道
谈谈小学生的惩罚教育?.doc
云平台架构专题:谈谈服务治理(24页).pdf
谈谈你对JVM的理解?
本文谈谈本人是如何设计一个简单的 iOS 响应式架构。
作者自言“最难搞的就是给这些架构组件起名字”。因为当时的软件环境跟现在有很大不同,所以经典MVC中的概念很难被现在的工程师理解。比如经典MVC中说:“view永远不应该知道用户输入,比如鼠标操作和按键。”对一个...
在我们刚开始学习架构的时候,首先会想到分层的概念,分层架构比较经典的是三层架构,那么,什么是三层架构呢?它包括表现层,业务层,数据访问层;而对于一个新手来说,从抽象意义上的三层架构,逻辑上就划分为三个...
谈谈阿里巴巴的架构与设计,包括常用设计模式的运用和总结