Реализовать фейерверковую нить внутри метода

Я пытаюсь выполнить функциональность фейерверков на основе кода GitHub от Lenoids. Я хочу создать два фейерверка (один белый и другой красный), чтобы они отображались непрерывно через каждые две секунды.

Вот что я сделал до сих пор:

  1. Созданы две кнопки (по одной для каждого цвета фейерверка). Кнопки имеют функцию фейерверка.
  2. Нажимайте кнопки программно в потоке, чтобы отобразить фейерверк.

         @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_congratulations);
    
        new Thread(new Runnable() {
            @Override
            public void run() {
                while(true){
                    try {
                        Thread.sleep(100);
                        button10.callOnClick();  //for red fireworks 
                        button11.callOnClick();  //for white fireworks 
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
    
    
                }
            }
        }).start();
    }
    

Проблема в том, что если я увеличу значение метода сна, то фейерверк не появится вообще. Как я могу выполнить две секунды непрерывной функциональности фейерверка?

Вот код фейерверка:

new ParticleSystem(MyClass.this, 100, R.drawable.star_pink, 800) .setSpeedRange(0.1f, 0.25f) .oneShot(view, 70);

1 ответ

Если вы хотите запускать фейерверк каждые две секунды, используйте Handler вместо thread и thread.sleep.

final Handler ha=new Handler();
ha.postDelayed(new Runnable() {

@Override
public void run() {
   button10.callOnClick();   
   button11.callOnClick();
    ha.postDelayed(this, 2000);
 }
}, 2000);

Надеюсь, это поможет.

Другие вопросы по тегам