Android studio烟花效果程序
时间: 2024-01-21 12:21:07 浏览: 140
基于Android的烟花小程序
以下是一个简单的 Android Studio 烟花效果程序代码示例,你可以参考一下:
首先,在 layout 文件夹下创建一个名为 activity_main.xml 的布局文件,添加一个自定义 View:
```
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.example.firework.FireworkView
android:id="@+id/fireworkView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
```
接下来,在 Java 文件夹下创建一个名为 FireworkView.java 的类,继承 View 类,实现烟花效果:
```
public class FireworkView extends View {
private List<Firework> fireworks = new ArrayList<>(); // 存储所有火花
private Paint paint; // 画笔
private int screenWidth; // 屏幕宽度
private int screenHeight; // 屏幕高度
public FireworkView(Context context) {
super(context);
init();
}
public FireworkView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init();
}
public FireworkView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
paint = new Paint();
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.WHITE);
WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics metrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(metrics);
screenWidth = metrics.widthPixels;
screenHeight = metrics.heightPixels;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
for (Firework f : fireworks) {
if (f.isExplode()) { // 如果已经爆炸,绘制烟花效果
int alpha = f.getAlpha();
paint.setAlpha(alpha);
canvas.drawCircle(f.getX(), f.getY(), f.getRadius(), paint);
} else { // 如果还没有爆炸,绘制火花
canvas.drawCircle(f.getX(), f.getY(), f.getRadius(), paint);
}
}
}
public void launchFirework(float x, float y) {
Firework f = new Firework(x, y, screenWidth, screenHeight);
fireworks.add(f);
ValueAnimator animator = ValueAnimator.ofInt(0, 100);
animator.setDuration(1000);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
f.update((int) animation.getAnimatedValue());
invalidate(); // 刷新 View
}
});
animator.start();
}
}
```
最后,在 MainActivity.java 文件中添加以下代码,实现触摸屏幕时启动烟花效果:
```
public class MainActivity extends AppCompatActivity {
private FireworkView fireworkView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fireworkView = findViewById(R.id.fireworkView);
findViewById(R.id.mainLayout).setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
fireworkView.launchFirework(event.getX(), event.getY());
}
return true;
}
});
}
}
```
这样,你就可以在 Android Studio 中运行该程序,触摸屏幕时就会出现烟花效果了。
阅读全文