Что касается простого колеса прогресса, которое не показывает фактический прогресс (просто то, что ваше приложение что-то делает), я бы порекомендовал простое анимированное изображение (например, сгенерируйте его на http://www.ajaxload.info/),
Если анимированное изображение / gif недоступно:
Простое решение - создать несколько изображений и заменить их по кругу.Я использовал это недавно, в основном вы создаете таймер, который вызывает сам себя:
Timer updateAnim = new Timer() {
@Override
public void run() {
currentImage = (currentImage + 1) % NO_IMAGES;
setVisibilities();
this.schedule(UPDATE_TICK);
}
};
private void setVisibilities() {
img1.setVisible(false);
img2.setVisible(false);
switch (currentImage) {
case 0:
img1.setVisible(true);
break;
case 1:
img2.setVisible(true);
break;
}
}
setVisibilities()
просто устанавливает текущее изображение как видимое, а все остальные - как невидимое.Я испытал это, чтобы быть быстрее, чем переключение URL изображения (используя только одно изображение, вызывая img.setURL(String url);
).
Теперь вы просто позвоните updateAnim.schedule(UPDATE_TICK);
, и он запустится.
Я полагаю, что самым быстрым (потому что браузер может оптимизировать это) будет использование CSS-анимации (создание одного изображения и его вращение), но, вероятно, также наиболее сложным (не так уж и много, поэтомуможет быть, это на самом деле проще, чем я думаю;).Посмотрите этот пост об анимации вращения CSS.
Если вы хотите создать реальный индикатор выполнения (который на самом деле показывает прогресс), вам нужен обратный вызов, который вызывается при прогрессе.Просто обновите ваши переходы изображений / CSS в этом обратном вызове прогресса.