Я пытаюсь создать экземпляр Progress Bar
из основной операции и динамически добавить его в представление. Когда я делаю это, я получаю строку:Программный код Android Progress Bar
ProgressBar bar = new ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal);
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
bar.setLayoutParams(params);
bar.setId(mInt);
LinearLayout layout = (LinearLayout) findViewById(R.id.layout);
layout.addView(bar);
Я начал новый проект, который включает в себя только код выше, и прогресс бар отображается правильно.
Если я добавлю следующие строки к вышеуказанному коду, экран будет пустым на секунду, а затем отобразится половина полного бара. Я бы ожидал увидеть пустой бар на секунду, а затем он достигнет 50%.
try {
Thread.sleep(2000);
} catch ...{
}
bar.setProgress(50);
Если я добавлю такой код, однако, панель и изменения отображаются правильно.
Button b = new Button(this);
b.setText("change bar");
b.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
changeProg();
}
});
public void changeProg() {
switch (state) {
case 0: bar.setProgress(100); state = 1; break;
case 1: bar.setProgress(127); state = 2; break;
case 2: bar.setProgress(33); state = 0; break;
}
}
Если я пытаюсь автоматизировать процесс с петлей для вызова changeProg()
каждый так часто, экран просто не остается пустым - нет виджетов на все дисплей, являются ли они описываются XML или про грамматический не делают никакой разницы.
У меня возникли проблемы с пониманием того, почему такое поведение существует.