Android: mostra una barra di avanzamento indeterminata senza la finestra di dialogo

Voglio mostrare la mia barra di avanzamento al centro dello schermo quando un’elaborazione avviene con un clic del pulsante. Ma voglio solo la barra di avanzamento senza la finestra di dialogo ..

C’è un modo per farlo?

È spiegato in pieno in ApiDemos all’interno dell’SDK. L’esempio che desideri è denominato: ProgressBar3.java e può essere trovato in \ ApiDemos \ src \ com \ example \ android \ apis \ view \

Inoltre, se vuoi rimuovere i bordi della finestra di dialogo in modo che appaia solo la barra di avanzamento, puoi definire la finestra stessa come una vista / sovrapposizione trasparente (è spiegata anche negli esempi).

Se non hai bisogno di una finestra di dialogo, metti la barra di progresso nel tuo layout come qualsiasi altro elemento della vista e imposta la visibilità su “INVISIBILE” o anche su “GONE” per impostazione predefinita.

Quindi mostralo quando è necessario cambiandolo in “VISIBILE” usando setVisibility nel tuo codice e nascondilo quando l’attività viene eseguita rendendolo nuovamente ‘INVISIBLE’ o ‘GONE’.

per esempio

MyTask { // get handle on ProgressBar ViewItem defined in XML (id:progressBar) ProgressBar progressBar = findViewById(R.id.progressBar); //starting task, show progress bar progressBar.setVisibility(View.VISIBLE); // Do some stuff... //task done, hide it again progressBar.setVisibility(View.GONE); } 

Questa è una versione semplice, interamente eseguita nel thread dell’interfaccia utente, ma dovrebbe essere facile da adattare se si utilizza un’attività asincrona o gestori di thread. È sufficiente mostrare, hide e pubblicare eventuali aggiornamenti nella finestra di dialogo mentre si è nel thread dell’interfaccia utente e svolgere l’attività a esecuzione prolungata in background.

@reflog: non è quello che serve, credo.

@lostInTransit:

Il modo corretto per raggiungere questo è il seguente:

  1. Crea la tua propria finestra di dialogo
  2. Metti la barra di avanzamento come unica vista sulla finestra di dialogo
  3. Imposta lo sfondo della finestra di dialogo trasparente
  4. Mostra la finestra di dialogo.

Questo è tutto. Funziona per me su dispositivi con 1.5 a 2.1. Non provato su 2.2.

-Yogesh

La risposta di @Jesse Finnerty ha risolto il mio problema. quello che ho fatto è stato:

 private ProgressBar mprogressBar; 

L’interno di oncreate () proprio come altri pulsanti e visualizzazioni di testo che ho fatto, mprogressBar = (ProgressBar) findViewById (R.id.progressBar);

Poi nel punto in cui voglio che la ruota che gira appaia, do il comando

 mprogressBar.setVisibility(View.VISIBLE); 

nel punto in cui voglio che sparisca.

 mprogressBar.setVisibility(View.INVISIBLE); 

Questo è sotto interruttore in realtà. così come cambiano gli stati nel mio programma, la barra di progresso appare e scompare

C’è un ottimo esempio per fare ciò che Yogesh sta suggerendo a:

Come centrare facilmente l’indicatore di avanzamento in ProgressDialog (quando nessun titolo / testo è passato)

Il merito va a Macarse per averlo pubblicato.