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() {
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() {
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() {
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;
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() {
public void onClick(View v) {
// PBombUtil.starics3(MainActivity.this,10,800,img);
// 粒子效果
PBombUtil.starics4(MainActivity.this, 10, 1000, img, new CountDownTimer(1000, 100) {
public void onTick(long millisUntilFinished) {
}
public void onFinish() {
startActivity(new Intent(MainActivity.this, MainActivity2.class));
}
});
// startActivity(new Intent(MainActivity.this, MainActivity2.class));
}
});
}
}
评论
了解加密货币到加密货币的互换
1、什么是加密货币互换?加密货币到加密货币的互换是指以现行市场汇率将一种加密货币直接兑换为另一种加密货币。与需要法定货币存款和较长流程的传统交易所不同,加密货币到加密货币的互换可以无缝地促进交换。掉期在提高加密货币的流动性和效率方面发挥着重要作用。该功能使用户能够将他们的加密货币与钱包中的其他代币进
区块链头条
0
李彦宏:开源大模型不如闭源,后者会持续领先;周鸿祎:“开源不如闭源” 的言论是胡说八道
架构师大咖
架构师大咖,打造有价值的架构师交流平台。分享架构师干货、教程、课程、资讯。架构师大咖,每日推送。
公众号该公众号已被封禁0、李彦宏:开源大模型不如闭源,后者会持续领先当今
源码共读
0
用 Shader 实现旗帜飘扬动画效果
我觉得对于刚入门 3D 编程的朋友来说,如果能够完成代码创建模型数据->创建材质->编写Shader动画这一系列,想必会有满满的成就感。今天就用 Cocos Creator 的 utils.MeshUtils.createMesh 接口,带大家感受一下这个流程。这个流程不仅可以用于新手学
COCOS
2
【第129期】程序员的新宠:三款终端工具,让你告别Xshell!
概述 WindTerm:跨平台的SSH利器 首先介绍的是WindTerm,这是一款使用C语言开发的跨平台SSH客户端。它不仅完全免费,而且没有商业使用的限制。WindTerm支持SSH v2、Telnet、Raw Tcp等协议,而且性能出色,甚至超过了FinalShell和Electerm。功能
前端微服务
0
字节员工:35岁以后被裁员的,后来都走了哪条路?现在2-2,要不要利用最后一年拼命上个岸。
架构师大咖
架构师大咖,打造有价值的架构师交流平台。分享架构师干货、教程、课程、资讯。架构师大咖,每日推送。
公众号该公众号已被封禁在当今竞争激烈的职场环境中,年龄并不总是一个决定性
源码共读
0
上班的时候,有一群摸鱼搭子非常重要...
上班的时候,有一群摸鱼搭子非常重要!一到上班时间,他们就从四面八方涌进群里冒泡...从八卦聊到股市、从职场聊到乌X兰局势,偶尔还会复读、相亲、battle...然后,下午6点钟准时消失不见...所以你要不要加入我们一起摸鱼?我们有北京、上海、深圳、广州、杭州、武汉、成都、南京等8个城市的摸鱼群,还有
产品经理日记
0
周四002 瑞超:同样落寞的境遇——北雪平vs埃尔夫斯堡
上赛季最终排名联赛第9的北雪平本赛季伊始表现不佳,4轮战罢他们仅以1胜1平2负的战绩排在倒数第三,这支历史上曾夺得13次联赛冠军、6次杯赛冠军老牌劲旅,正如英格兰赛场上的一众百年俱乐部,在低谷中不断探索着出路。球队主教练安德烈亚斯·阿尔姆曾是AIK索尔纳及赫根队的主教练,他于今年年初刚刚拿起球队教鞭
产品与体验
0
雷军辟谣了!不是高考状元,卡里也没有冰冷的 40 亿
架构师大咖
架构师大咖,打造有价值的架构师交流平台。分享架构师干货、教程、课程、资讯。架构师大咖,每日推送。
公众号该公众号已被封禁最近很火的雷军简历,听说落魄时卡里只有冰冷的 40
源码共读
0