Android 按钮颜色仅在for循环结束时更改

Android 按钮颜色仅在for循环结束时更改,android,Android,我有13个按钮,需要逐个更改按钮的颜色。在下面的代码中,“copyview”有按钮id,“TextToSpeech”调用TextToSpeech方法。我的问题是我要用泰米尔语逐字逐句地讲宪章。但按钮颜色仅在for循环结束时更改。按钮的颜色不会一个接一个地改变,在for循环结束时,所有按钮的颜色都会变为白色。但音频没有问题,播放效果很好。我该怎么做才能使按钮的颜色一个接一个地改变 for(int i=0;i<Uirkeys.length;i++){ try {

我有13个按钮,需要逐个更改按钮的颜色。在下面的代码中,“copyview”有按钮id,“TextToSpeech”调用TextToSpeech方法。我的问题是我要用泰米尔语逐字逐句地讲宪章。但按钮颜色仅在for循环结束时更改。按钮的颜色不会一个接一个地改变,在for循环结束时,所有按钮的颜色都会变为白色。但音频没有问题,播放效果很好。我该怎么做才能使按钮的颜色一个接一个地改变

     for(int i=0;i<Uirkeys.length;i++){
        try {           
            TeaxtToSpeach(map.get(Uirkeys[i]));
            copyView.get(i).setBackgroundColor(Color.WHITE);
            Thread.sleep(700);
        } catch (InterruptedException e) {
           e.printStackTrace();
        }
    }

for(int i=0;i您需要在UI线程中运行它,因为您正在运行UI更改
这是一个例子

Activity.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            TeaxtToSpeach(map.get(Uirkeys[i]));
            copyView.get(i).setBackgroundColor(Color.WHITE);
        }
});

如果你去掉Thread.sleep(700),它会立即改变;我需要等待音频完成,然后需要更改btn颜色。我需要让for循环每增加700毫秒等待一次。我怎么做?永远不要使用
Thread.sleep(…)
EVER。尤其是在使用UI时,锁定UI会导致问题。您不应该等待设置的时间,而应该使用
TextToSpeech.onutternancecompletedlistener
utternanceprogresslistener
,如果您的目标是API 18或更高版本。在TTS系统完成“spea”后调用侦听器的回调你可以用它来改变按钮的颜色。