Как запланировать изменение разных изображений в фоновом режиме дизайна

#android #android-studio #background #scheduled-tasks #weather

#Android #android-studio #фон #запланированные задачи #Погода

Вопрос:

В настоящее время я работаю над проектом погоды в Android Studio, где я хочу планировать изменения изображения в моем фоновом режиме дизайна каждые 5 секунд, у меня есть все ресурсы изображения в моем каталоге @drawable. Я просмотрел базовый учебник, в котором они объяснили некоторые вещи в демо, но это лишь немного помогло и не совсем меня устроило, я все еще в замешательстве, потому что получаю много ошибок, но в настоящее время я попробовал эти несколько кодов:

HomeActivity.java:

 public class HomeActivity extends AppCompatActivity {

    public static int count=0;
    int[] drawablearray=new int[]{R.drawable.burj_khalifa,R.drawable.central_bank_of_nigeria,R.drawable.eiffel_tower,R.drawable.hong_kong,R.drawable.statue_of_liberty};
    Timer _t;
    
    ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        imageView = findViewById(R.id.imageView);
        
        ImageView = (ConstraintLayout) findViewById(R.id.lnMain);
            _t = new Timer();
            _t.scheduleAtFixedRate(new TimerTask); {
            public void run(); {

                    runOnUiThread(new Runnable() { // run on ui thread
                        @Override
                        public void run() {
                            if (count < drawablearray.length) {

                                lnMain.setBackgroundDrawable(drawablearray[count]);
                                count = (count   1) % drawablearray.length;
                            }
                        }
                    });
            }
        }, 5000, 5000);
    }
}
 

Есть идеи о том, как организовать его в соответствии с дизайном?

Ответ №1:

 final Handler h = new Handler();
Runnable r = new Runnable() {
    public void run() {
        Home.this.getWindow.setBackgroundDrawableResource(drawableArray[count]);
        cout  = (count   1) % drawableArray.length; 
        h.postDelayed(this, 5000);    
    }
 };
 

Ответ №2:

 final Runnable r = new Runnable() {
    public void run() {
        imageView.setBackgroundDrawableResource(drawablearray[count]);
        count  = (count 1)%(drawablearray.length); 
        handler.postDelayed(this, 5000);
    }
};
 

И вызов выглядит так:

 handler.postDelayed(r,0);
 

Это вызовет runnable для выполнения и обработки.postDelayed будет запускать метод каждые 5000 миллисекунд.

Ответ №3:

Я уже исправил ошибку, используя constraintlayout вместо imageview и inmain. Я также получил идентификатор для макета:

 constraintLayout = findViewById(R.id.layout);
            constraintLayout.setBackgroundResource(R.drawable.burj_khalifa);
                _t = new Timer();
                _t.scheduleAtFixedRate(new TimerTask() {
                    @Override
                            public void run() {
                        runOnUiThread(new Runnable() { // run on ui thread
                            @Override
                            public void run() {
                                if (count < drawable.length) {
    
                                    constraintLayout.setBackgroundResource(drawable[count]);
                                    count = (count   1) % drawable.length;
                                }
                            }
                        });
                }
            }, 5000, 5000);
        }
    }