Bene, come per una semplice rotellina di avanzamento che non mostra il progresso effettivo (solo che l'applicazione sta facendo qualcosa), raccomanderei una semplice immagine animata (generarne uno a http://www.ajaxload.info/ per esempio).
Se un animato image/GIF non è un'opzione:
Una soluzione semplice sarebbe la creazione di diverse immagini e sostituirle in modo circolare. Ho usato questo di recente, in pratica si effettua un timer che si definisce:
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()
imposta solo l'immagine corrente visibile, tutti gli altri a invisibile. Ho sperimentato questo per essere più veloce di cambiare l'URL dell'immagine (usando solo un'immagine, chiamando img.setURL(String url);
).
Ora basta chiamare updateAnim.schedule(UPDATE_TICK);
e verrà eseguito.
Immagino che il più veloce (perché il browser può ottimizzarlo) sarebbe l'uso di un'animazione CSS (creando un'immagine e ruotandola), ma probabilmente anche la più complessa (non l'ho usata molto, quindi potrebbe beh, è che in realtà è più semplice di quanto penso;). Dai un'occhiata al post this sulle animazioni di rotazione CSS.
Se si desidera effettuare una barra di avanzamento reale (che mostra effettivamente i progressi), è necessario un richiamo che venga richiamato in corso. Basta aggiornare le transizioni di immagini/CSS in questa richiamata di avanzamento.
quali ovvi motivi? :) Il codice lato server di solito risponde in ms, quindi aggiungere una barra di avanzamento e rimuoverlo dopo 100 ms sembrerà fastidioso sfarfallio – milan
Bene, il mio server ha bisogno di 3 secondi per rispondere a causa della complessità dei dati. Cercherò di ottimizzare SQL in seguito ma non sarà inferiore a 100 ms per alcune chiamate.Mi hai fatto pensare e cercherò di non mostrare la ruota del progresso dove non ce n'è bisogno, ma per alcune chiamate al server ne avrò sicuramente bisogno. –