如何安排不同的图像在设计背景中发生变化

How to schedule different images to change in design background

我目前正在 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);
    }
}

关于如何组织它以适应设计的任何想法?

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);    
    }
 };
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);

这将调用 运行nable 来执行并且 handle.postDelayed 将每 5000 毫秒 运行 该方法。

我已经通过使用 constraintlayout 代替 imageview 和 inmain 修复了错误。我还得到了布局的 id:

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);
        }
    }