Android撒花效果 |
您所在的位置:网站首页 › 撒花动画怎么做 › Android撒花效果 |
这个功能源于好轻APP打卡功能(Author : True Lies),当时做这个功能得时候有点摸不着头脑 不过还是做出来了,下面具体实现一下功能 我们先来看一下效果是什么样的: 1.第一步,我们需要不规则的碎片,这里我们需要绘制一个个不规则的View 不规则View采用line进行连接 然后将连起来然后填充就好了,那么我们的点怎么确定呢,看图: 我们所有的点都在红色区域 那么我们确定外围的框和内围的框就好了 ,一个外围,一个内围,取相减值就好了,然后用Point装载就可以了 这里的mPadding就是内围和外围的距离 我默认的是10 开始绘制不规则View:这段代码就不讲述了,比较简单 2.那么好了,我们绘制完了不规则的View,现在接下来是怎么让它动起来,实现撒花效果呢: 1.首先我们需要这些不规则的View从上往下动画下来,我们首先想到的是距离的改变,但是这样重复绘制效 率是比较低的,而且不好控制,那么我们现在需要用到贝塞尔动画(贝塞尔线性动画不懂请左转百度), 那么我们就需要用到ValueAnimator和TypeEvaluator。 2.这里我贴一下贝塞尔动画的公式 1-3阶的 三阶公式 B(T) = p0((1-t)(1-t)(1-t))+3P1t((1-t)(1-t))+3p2(t*t)(1-t)+p3(t*t*t) 二阶公式 B(T) = (1-t)*(1-t)*P0+2t(1-t)P1+t*t*P2 一阶公式 B(T) = P0+(P1-P0)*t=(1-t)P0+t*P1 简单讲述一下,p0是我们开始的点 pX-p(最大长度-1) 都是我们的控制点(及p1 p2) ,那么p3就是我们的结束点,而t是时间,即0-1的过程 3.这里我们采用的是3阶的贝塞尔,如果需要更多阶位的请左转百度德卡斯特里奥算法, 4.控制点,我们开始的控制点好得到,即屏幕最上和屏幕最下,那么中间的两个呢?这里我采用的是屏幕中间 分割线第一个控制点在半屏之上,第二个控制点在半屏之下(这是Y轴),那么x轴就是全屏宽度,不过建议x起 始点是以屏幕宽度一半为基础,向左移动半屏,然后x的最大宽度为2*屏幕宽度最终我们得到这样的: 3.这里为了效果好看一点,我们加入一些插值器,随机的: 最后我们完成了一个花瓣飘落的效果,所以我们需要很多,这里可以用hanlder和Runnable延迟来做 最后来看一下动态的效果: [最后附上下载地址](http://download.csdn.net/download/u010192548/9991818) |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |