以固定的时间间隔更改Android UI

时间:2020-09-10 07:02:23

标签: android android-studio android-layout

主要动机是非常基本的:暂停循环使UI更改,再次暂停使UI更改为动态创建的视图,并为视图手动分配ID。

Thread.sleep()不起作用

for(int i=0;i<n;i++){
Handler handler = new Handler();
                            handler.postDelayed(new Runnable() {
                                @Override
                                public void run() {
                                    @SuppressLint("ResourceType") Button mButton = (Button) findViewById(i);
                                    mButton.setBackgroundColor(Color.parseColor("#ABCDEF"));
                                }
                            }, 1000);
}

使用Handler也不起作用。当Handler放入循环中时,它将始终获取循环的最后一个值,即始终为n-1。

2 个答案:

答案 0 :(得分:0)

我认为您必须清除问题,并详细说明睡眠不正常的含义>>>您是否以此方式使用它?

Thread.sleep(1000); // do nothing for 1000 miliseconds

您可以尝试

Thread.wait(sleeptime);//Sample Thread.wait(1000); 1 second sleep

但是通常延迟android中的主线程不好 参考java-delay-wait

答案 1 :(得分:0)

  • 您可以使用 Handler 在 Android 中延迟 UI 更改。处理程序启动一个新线程并接受执行时间。
  • 要以重复的时间间隔更改 UI,请将 timeInMillisecons 设置为自身的倍数。

    Handler handler = new Handler(Looper.myLooper());
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                    /**
                     * Change UI here
                     */
                    }
                }, timeInMillisecons);