2011-02-07 12 views
7

Voglio mostrare la finestra di avanzamento prima di riprodurre il video. ho provato sotto l'esempio del link per la riproduzione di video.come mostrare la barra di avanzamento prima di riprodurre il video

http://davanum.wordpress.com/2009/12/04/android-%E2%80%93-videomusic-player-sample-take-2/

funziona, ma ci vuole più tempo per prendere per la riproduzione di video in modo che io voglio mostrare un progresso finestra di dialogo prima avviare il video. quindi per favore tel me come mostrare la finestra di avanzamento prima di riprodurre il video.

Grazie.

I migliori saluti.

+0

un approccio migliore qui http://www.quicktips.in/how-to-show-progressbar-while-loading-a-video-in-android-videoview/ –

risposta

18

In primo luogo, dichiarare il dialogo

private static ProgressDialog progressDialog; 

Poi, nel onCreate, prima di chiamare runOnUiThread progresso, avviare la finestra di dialogo

progressDialog = ProgressDialog.show(this, "", "Loading...", true); 

In playVideo, impostare un OnPreparedListener che chiudere la finestra quando il video è pronto per giocare

mVideoView.setOnPreparedListener(new OnPreparedListener() { 

    public void onPrepared(MediaPlayer arg0) { 
     progressDialog.dismiss(); 
     mVideoView.start(); 
    } 
}); 
2

Suggerisco di guardare lo AsyncTask documentation, questo sembra ideale per fare il pre-caricamento del video. Ciò ti consentirà di mantenere stabile il thread dell'interfaccia utente durante il caricamento. C'è un esempio di utilizzo del metodo AsyncTask here.

Per aggiungere una finestra di avanzamento:

  • Creare un oggetto privato ProgressDialog come parte di una classe di estensione di AsyncTask.
  • Nel metodo onPreExecute() è possibile eseguire l'impostazione up, come ad esempio finestra di avanzamento: pd.setMessage(...) pd.setTitle(...) pd.show(...)
  • Nel metodo onPostExecute(...), chiudere la finestra: pd.dismiss();

Inoltre, è possibile aggiornare la finestra di avanzamento utilizzando il suo Metodo incrementProgressBy(...) o alternativamente un'animazione loop con il metodo setIndeterminate(...). Dare all'utente il feedback dei progressi caricati è una buona idea nella progettazione dell'interfaccia utente :)

Spero che questo aiuti!

8

IMHO in questo caso è m minerale grazioso da usare ProgressBar widget insted di dialogo di avanzamento. Sembra migliore sulla superficie del video. Si potrebbe aggiungere la barra di avanzamento per il layout della vostra attività al di sopra del VideoView:

<ProgressBar 
    android:id="@+id/progress" 
    android:indeterminate="true" 
    android:indeterminateBehavior="repeat" 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:layout_gravity="center"> 
</ProgressBar> 

In onCreate, prima di chiamare runOnUiThread, mostrare lo stato di avanzamento:

mProgress = (ProgressBar)findViewById(R.id.progress); 
mProgress.setVisibility(View.VISIBLE); 

In callback onPrepared nascondere il corso:

mProgress.setVisibility(View.INVISIBLE); 
Problemi correlati