因为公司项目,需要做粒子动画的特效,找了很多资料,偶然间在github上发现了一个比较强大的粒子特效动画leonids,分享给大家。
Leonids是一个与标准Android UI配合使用的粒子系统库。该库非常轻巧,LeonidsLib.jar只有81Kb。
流星雨效果
爆炸效果
涟漪效果
飞花效果
首先我们把库引进来,方式非常简单,目前最新版本是1.3.2的
compile 'com.plattysoft.leonids:LeonidsLib:1.3.2'
allprojects {
repositories {
jcenter()
}
}
做完以上部分,这个强大的粒子动画库我们已经引入进来了
一:爆炸效果
首先我们做一个测试
new ParticleSystem(mActivity, 1000, R.mipmap.flower0, 3000)
.setSpeedModuleAndAngleRange(0.05f, 0.2f, 0, 360)
.setRotationSpeed(30)
.setAcceleration(0, 90)
.oneShot(mButton1, 200);
在Activity非onCreate中,调用以上代码,我们就可以看到一个酷炫的爆炸效果
然后我解释下每个参数的含义
new ParticleSystem(mActivity, 1000, R.mipmap.flower0, 3000)
第一个参数是上下文对象(context),第二个参数(最大粒子数目),第三个参数(粒子资源),第四个参数(粒子存留时间)
第二个参数的含义是指同时存在的最大粒子数目,第四个参数是指每个粒子的最长留存时间;
.setSpeedModuleAndAngleRange(0.05f, 0.2f, 0, 360)
第一个,第二个参数,是一个速度区间,这个速度是粒子的发射速度(如果没有设定重力,那么粒子的速度是恒定的,如果设定了重力,粒子的速度会根据重力方向改变),粒子会在这个速度区间随机,每个粒子都是独立的
第三个,第四个参数,是指发射粒子的角度,0-360,的任意区间,这个参数的作用在于。我们操控发射粒子的方向,同样会在这个范围内随机
.setRotationSpeed(30)
这个参数的含义是指,图片元素的自转,粒子元素自身的旋转速度
.setAcceleration(0, 90)
这个参数含义是指,重力加速度,第一个为重力加速度的值,第二个为重力加速度的方向,理论上讲我们这个设置任意方向为重力方向
.oneShot(mButton1, 200);
见明知意,oneShot就是发射一次,第一个参数是发射的位置,第二个参数是发射的粒子数量
二:飞花效果
new ParticleSystem(mActivity, 1000, R.mipmap.flower0, 10000)
.setSpeedModuleAndAngleRange(0.05f, 0.2f, 0, 90)
.setRotationSpeed(60)
.setAcceleration(0.00005f, 90)
.emit(0, -100, 30, 10000);
其他方法同上,唯一区别在于
.emit(0,