Android实现炫酷的粒子爆炸特效

龙旋

共 10157字,需浏览 21分钟

 · 2021-09-30

直接复制工具类即可:

/** * explain :使用本工具类必须导入bloom库,如下: *      dependencies { *          implementation 'me.samlss:bloom:1.0.0' *     } * * */


1、工具类
import android.app.Activity;import android.os.CountDownTimer;import android.view.View;import java.util.Random;
import me.samlss.bloom.Bloom;import me.samlss.bloom.effector.BloomEffector;import me.samlss.bloom.particle.BloomParticle;import me.samlss.bloom.shape.ParticleCircleShape;import me.samlss.bloom.shape.ParticleRectShape;import me.samlss.bloom.shape.ParticleShape;import me.samlss.bloom.shape.ParticleStarShape;import me.samlss.bloom.shape.distributor.CircleShapeDistributor;import me.samlss.bloom.shape.distributor.ParticleShapeDistributor;
/** * Demo class */public class PBombUtil {/** * explain :使用本工具类必须导入bloom库,如下: * dependencies { * implementation 'me.samlss:bloom:1.0.0' * } * * */

/** * 默认 圆形特效(建议使用) */ public static void starics(Activity activity, float radius, long duration, View view) { Bloom.with(activity) .setParticleRadius(radius) .setEffector(new BloomEffector.Builder() .setDuration(duration) .setAnchor(view.getWidth() / 2, view.getHeight() / 2) .build()) .boom(view); }
/** * 在该库中,支持三种粒子形状 */
public static void starics1(Activity activity, float radius, View view, ParticleShapeDistributor particleShapeDistributor) { Bloom.with(activity) .setParticleRadius(radius) .setShapeDistributor(particleShapeDistributor) //圆形特效// .setShapeDistributor(new CircleShapeDistributor()) //矩形特效 //or setShapeDistributor(new RectShapeDistributor()) //星型特效 //or setShapeDistributor(new StarShapeDistributor()) .boom(view); }

/** * 随机特效 */ public static void starics2(Activity activity, float radius, View view) { Bloom.with(activity) .setParticleRadius(radius) .setShapeDistributor(new ParticleShapeDistributor() { @Override public ParticleShape getShape(BloomParticle particle) { Random random = new Random(); switch (random.nextInt(3)) { case 0: return new ParticleCircleShape(particle.getInitialX(), particle.getInitialY(), particle.getRadius()); case 1: return new ParticleRectShape(2, 2, particle.getInitialX(), particle.getInitialY(), particle.getRadius());//设置圆角效果 case 2: return new ParticleStarShape(particle.getInitialX(), particle.getInitialY(), particle.getRadius()); } return new ParticleCircleShape(particle.getInitialX(), particle.getInitialY(), particle.getRadius()); } }).boom(view);
}
/** * 组合起来(强力推存) */ public static void starics3(Activity activity, float radius, long duration, View view) {// Bloom.with(LoginActivity.this)// .setParticleRadius(5)// .setShapeDistributor(new ParticleShapeDistributor() {// @Override// public ParticleShape getShape(BloomParticle particle) {// switch (random.nextInt(3)){// case 0:// return new ParticleCircleShape(particle.getInitialX(), particle.getInitialY(), particle.getRadius());// case 1:// return new ParticleRectShape(2, 2, particle.getInitialX(), particle.getInitialY(), particle.getRadius());//设置圆角效果// case 2:// return new ParticleStarShape(particle.getInitialX(), particle.getInitialY(), particle.getRadius());// }// return new ParticleCircleShape(particle.getInitialX(), particle.getInitialY(), particle.getRadius());// }// })// .setEffector(new BloomEffector.Builder()// .setDuration(800)// .setAnchor(mScratchView.getWidth() / 2, mScratchView.getHeight() / 2)// .build())// .boom(view);
Bloom.with(activity) .setParticleRadius(radius) .setShapeDistributor(new ParticleShapeDistributor() { @Override public ParticleShape getShape(BloomParticle particle) { Random random = new Random(); switch (random.nextInt(3)) { case 0: return new ParticleCircleShape(particle.getInitialX(), particle.getInitialY(), particle.getRadius()); case 1: return new ParticleRectShape(2, 2, particle.getInitialX(), particle.getInitialY(), particle.getRadius());//设置圆角效果 case 2: return new ParticleStarShape(particle.getInitialX(), particle.getInitialY(), particle.getRadius()); } return new ParticleCircleShape(particle.getInitialX(), particle.getInitialY(), particle.getRadius()); } }) .setEffector(new BloomEffector.Builder() .setDuration(duration) .setAnchor(view.getWidth() / 2, view.getHeight() / 2) .build()) .boom(view); }
/** * 组合起来(强力推存 带跳转) */ public static CountDownTimer starics4(Activity activity, float radius, long duration, View view, CountDownTimer countDownTimer) {// Bloom.with(LoginActivity.this)// .setParticleRadius(5)// .setShapeDistributor(new ParticleShapeDistributor() {// @Override// public ParticleShape getShape(BloomParticle particle) {// switch (random.nextInt(3)){// case 0:// return new ParticleCircleShape(particle.getInitialX(), particle.getInitialY(), particle.getRadius());// case 1:// return new ParticleRectShape(2, 2, particle.getInitialX(), particle.getInitialY(), particle.getRadius());//设置圆角效果// case 2:// return new ParticleStarShape(particle.getInitialX(), particle.getInitialY(), particle.getRadius());// }// return new ParticleCircleShape(particle.getInitialX(), particle.getInitialY(), particle.getRadius());// }// })// .setEffector(new BloomEffector.Builder()// .setDuration(800)// .setAnchor(mScratchView.getWidth() / 2, mScratchView.getHeight() / 2)// .build())// .boom(view);
Bloom.with(activity) .setParticleRadius(radius) .setShapeDistributor(new ParticleShapeDistributor() { @Override public ParticleShape getShape(BloomParticle particle) { Random random = new Random(); switch (random.nextInt(3)) { case 0: return new ParticleCircleShape(particle.getInitialX(), particle.getInitialY(), particle.getRadius()); case 1: return new ParticleRectShape(2, 2, particle.getInitialX(), particle.getInitialY(), particle.getRadius());//设置圆角效果 case 2: return new ParticleStarShape(particle.getInitialX(), particle.getInitialY(), particle.getRadius()); } return new ParticleCircleShape(particle.getInitialX(), particle.getInitialY(), particle.getRadius()); } }) .setEffector(new BloomEffector.Builder() .setDuration(duration) .setAnchor(view.getWidth() / 2, view.getHeight() / 2) .build()) .boom(view); return countDownTimer.start(); }}


2、Activity中使用
public class MainActivity extends AppCompatActivity {
private ImageView img;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
img = (ImageView) findViewById(R.id.image_s); img.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {// PBombUtil.starics3(MainActivity.this,10,800,img);// 粒子效果 PBombUtil.starics4(MainActivity.this, 10, 1000, img, new CountDownTimer(1000, 100) { @Override public void onTick(long millisUntilFinished) {
}
@Override public void onFinish() { startActivity(new Intent(MainActivity.this, MainActivity2.class)); } });

// startActivity(new Intent(MainActivity.this, MainActivity2.class));
}        });    }}


效果图:



到这里就结束啦。
浏览 91
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报