android studio实现简单的烟花效果程序
时间: 2023-07-12 14:48:35 浏览: 119
小程序 烟花效果源码.rar
好的,以下是一个简单的烟花效果程序的实现方法:
1. 创建一个新项目并在 activity_main.xml 文件中添加一个 FrameLayout 作为根布局。
```
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
```
2. 创建一个自定义 View 类 FireworkView 并继承 View。在这个类中,我们将实现烟花的绘制和动画效果。
```
public class FireworkView extends View {
private Paint mPaint;
private int mRadius;
private int mX, mY;
private int mWidth, mHeight;
public FireworkView(Context context) {
super(context);
init();
}
public FireworkView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
mPaint = new Paint();
mPaint.setColor(Color.RED);
mRadius = 10;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(mX, mY, mRadius, mPaint);
if (mRadius < 100) {
mRadius += 5;
invalidate();
}
else {
((ViewGroup)getParent()).removeView(this);
}
}
public void setStartPosition(int x, int y) {
mX = x;
mY = y;
}
}
```
3. 在 MainActivity 中添加以下代码以实现烟花效果:
```
public class MainActivity extends AppCompatActivity {
private FrameLayout mContainer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContainer = (FrameLayout) findViewById(R.id.container);
mContainer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FireworkView fireworkView = new FireworkView(MainActivity.this);
Random random = new Random();
int x = random.nextInt(mContainer.getWidth());
int y = random.nextInt(mContainer.getHeight());
fireworkView.setStartPosition(x, y);
mContainer.addView(fireworkView);
}
});
}
}
```
这里我们在 FrameLayout 上设置一个点击事件,每次点击时都会在随机位置添加一个 FireworkView。在 FireworkView 的 onDraw 方法中,我们使用 Canvas 绘制一个圆形,并不断地增加它的半径,直到达到一定大小后将自身从父布局中移除。这样就可以实现一个简单的烟花效果了。
阅读全文