- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Androi动画之萌萌哒蜡烛吹蜡烛动画
Android动画之萌萌哒蜡烛吹蜡烛动画
二、过程实现
蜡烛的绘制和动画
本着面向对象的思想,很明显这里就是两个蜡烛嘛!既然是这样那我们就定义一个蜡烛类具有蜡烛的基本属性。
public abstract class ICandle {
//蜡烛底部左下坐标
protected int mCurX;
protected int mCurY;
//蜡烛宽高
protected int mCandleWidth;
protected int mCandleHeight;
//蜡烛左眼坐标
protected Point mEyeLPoint;
//蜡烛右眼坐标
protected Point mEyeRPoint;
//蜡烛眼睛半径
protected int mEyeRadius;
//眼睛间隔距离
protected int mEyeDevide;
//身体颜色
protected int mCandleColor;
//是否停止动画中
protected boolean mIsAnimStoping = false;
//蜡烛芯坐标
protected Point mCandlewickPoint;
public void initAnim(){
}
public void stopAnim(){
}
public void drawSelf(Canvas canvas){
}
}
对应着这蜡烛还有代码,那就一目了然了。可能需要解释的应该就是下面的几个方法了public void initAnim(), stopAnim()初始化开始和结束动画需要的数据,小蜡烛将会实现这个方法,drawSelf(Canvas canvas)把画布传进来然后蜡烛自己绘制自己。
现在就是让我们来看一看小蜡烛身体内部构造的时候了,hiahiahiahia!
不对,和蜡烛生死相随的还有火焰呢!先来看看火焰吧,等下小蜡烛还要燃烧自己呢。+10086s
+ Flame
一样先来一睹我们的富勒姆真容
好像也没什么毛病,首先是里面的区域,就是Flame啦,外面的呢,就是Flame先生燃烧自己散发的人性之光和飘散的骨灰(手动抹眼泪)。
来看一下Flame的实现吧。我们一步步分析。
private static float CHANGE_FACTOR = 20;
private Paint mPaint;
private Path mPath;
//左下点坐标
private int mCurX;
private int mCurY;
//火焰宽度
private int mWidth;
//火焰高度
private int mHeight;
//记录初始高度
private int mPreHeight;
//记录初始宽度
private int mPreWidth;
//火焰顶部贝塞尔曲线控制点变化参数
private int mTopXFactor;
private int mTopYFactor;
//用于实现火焰的抖动
private Random mRandom;
//光环半径
private int mHaloRadius;
//正在燃烧
private boolean mIsFiring;
//是否启动停止动画
private boolean mIsStopAnim = false;
private boolean mFlagStop = false;
private LinearGradient mLinearGradient;
private RadialGradient mRadialGradient;
private ValueAnimator mFlameAnimator;
private ValueAnimator mHaloAnimator;
参数就是这些了,主要是我们的动画实现过程,也就是我们的属性动画ValueAnimator 这里还有两个渲染类不知道大家用过没有,LinearGradient和RadialGradient不了解的同学可以看我之前的博文了解一下。LinearGradient绘制出了火焰,RadialGradient绘制除了发散的光芒。
初始化的过程我就不写了,大家
文档评论(0)