Android超强大的粒子动画库,流星雨,爆炸,满屏飞花,等粒子特效快速实现

您所在的位置:网站首页 爆炸效果GIF图片 Android超强大的粒子动画库,流星雨,爆炸,满屏飞花,等粒子特效快速实现

Android超强大的粒子动画库,流星雨,爆炸,满屏飞花,等粒子特效快速实现

2023-07-23 10:52| 来源: 网络整理| 查看: 265

因为公司项目,需要做粒子动画的特效,找了很多资料,偶然间在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, -100, 30, 10000);

第一个参数,和第二个参数,是屏幕的像素坐标,粒子动画的发射点,

第三个参数是每秒发射多少粒子

第四个参数是持续发射多少秒

时间到了之后,粒子会自动停止发射

三:构造函数,和一些方法

 粒子系统通常用于游戏中,用途广泛:爆炸,火灾,烟雾等。这些效果也可以在普通应用程序中使用,以添加“多汁”或“俏皮设计”元素。正是因为它的主要用途是游戏,所有引擎都支持粒子系统,但对于标准的Android用户界面来说没有这样的东西。这意味着如果你正在构建一个Android应用程序,并且你想要一个粒子系统,那么你必须包含一个图形引擎并使用OpenGL--这太过于夸张了 - 或者你必须自己实现它。Leonids将填补这一空白,为使用标准Android UI的开发人员带来粒子系统。

所有构造函数都使用活动,粒子的最大数量和生存时间。区别在于如何指定粒子的图像。

受支持的绘图是:BitmapDrawable和AnimationDrawable。

ParticleSystem(Activity a,int maxParticles,int drawableRedId,long timeToLive) ParticleSystem(Activity a,int maxParticles,Drawable drawable,long timeToLive) ParticleSystem(Activity a,int maxParticles,位图位图,long timeToLive) ParticleSystem(Activity a,int maxParticles,AnimationDrawable动画,long timeToLive) 还有一些构造函数可以接收视图ID作为父视图,因此您可以将粒子系统放置在背景上(或任何两个视图之间) ParticleSystem(Activity a,int maxParticles,int drawableRedId,long timeToLive,int parentViewId) ParticleSystem(Activity a,int maxParticles,Drawable drawable,long timeToLive,int parentViewId) ParticleSystem(Activity a,int maxParticles,位图位图,long timeToLive,int parentViewId) ParticleSystem(Activity a,int maxParticles,AnimationDrawable动画,long timeToLive,int parentViewId)

另一个构造函数接收父视图组和drawable,用于不适合将参考传递给Activity的地方

ParticleSystem(ViewGroup parentView,int maxParticles,Drawable drawable,long timeToLive)

在粒子系统上进行配置的可用方法有:

setSpeedRange(float speedMin,float speedMax):使用0-360作为角度范围 setSpeedModuleAndAngleRange(float speedMin,float speedMax,int minAngle,int maxAngle) setSpeedByComponentsRange(float speedMinX,float speedMaxX,float speedMinY,float speedMaxY) setInitialRotationRange(int minAngle,int maxAngle) setScaleRange(float minScale,float maxScale) setRotationSpeed(float rotationSpeed) setRotationSpeedRange(float minRotationSpeed,float maxRotationSpeed) setAcceleration(浮动加速度,浮动角度) setFadeOut(long milisecondsBeforeEnd,Interpolator interpolator):使用插值器实现简单淡出效果的实用方法 setFadeOut(长期持续时间):简单淡出的实用方法

如果您想要使用已创建和移动的粒子,此方法使用已经创建好的粒子组

setStartTime(int time)

发射器

从发射器发射每秒的粒子数量。如果设置发射时间,那么发射器会在该时间后停止,否则它是连续的。

基本的发射器 发射(View发射器,int particlesPerSecond)发射(View发射器,int particlesPerSecond,int发射时间) 基于(x,y)坐标发射 发射(int emitterX,int emitterY,int particlesPerSecond)emit(int emitterX,int emitterY,int particlesPerSecond,int emitingTime) 用重力发射 emitWithGravity(查看发射器,int引力,int particlesPerSecond)emitWithGravity(查看发射器,int引力,int particlesPerSecond,int发射时间) 更新,停止和取消 updateEmitPoint(int emitterX,int emitterY)动态更新发射点。updateEmitPoint(View emiter,int gravity)使用重力动态更新发射点。stopEmitting()停止发射新的粒子,但活动的粒子被更新。取消()停止新粒子的发射,并将活动球粒排出。

每个粒子系统仅为粒子使用一个图像。如果你想要发射不同的粒子,你需要为它们中的每一个创建一个粒子系统。

每个粒子发射示例,只能发射一种粒子,如果我们要发射多种不同的粒子,就需要创建更多的发射示例

    

四:感想 

由于水平有限,并没有开发出此框架更高级的使用,但是从文档来看,功能不只我所描述的这些。

从理论上讲,此框架可以用来开发类似星轨等更加复杂的视图,抛砖引玉,如文中有错误的地方,请大家及时联系我,以免误导他人.文尾我会附上上面4种效果的源码,以供大家参考

github地址传送门

博文顶部四种效果的源码

https://download.csdn.net/download/mymolit/10290777



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3