Android烟花代码

       最近,看到消息好像今年小村放不了烟花了,但有想放个烟花娱乐娱乐,于是,便写了个烟花代码。主要还是一些组合动画的使用。

       弄了一天,感觉还是不太满意,但也只能先这样了。

一、一些主要的功能实现

1.获取系统时间并实时动态刷新。

    Handler handler=new Handler(){

        @Override
        public void handleMessage(@NonNull Message msg) {
            super.handleMessage(msg);
            switch (msg.what){
                case 1:last.setText("@Since:"+getNowDay("yyyy/MM/dd HH:mm:ss"));break;//
                case 2:heart.setVisibility(View.VISIBLE);heart.startAnimation(animationSet2);break;
                default:break;
            }
        }
    };

2.一个打字机的实现。

3.gif图的播放

在实现作品的过程中。素材资源,声影来源最为重要,没有素材,或素材达不是自己想要的,都达不到预期的效果。所以,获取素材才是第一步。

最后是代码,实现的过程不是很难。

以下是一个简单的 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 中运行该程序,触摸屏幕时就会出现烟花效果了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天真小巫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值