70 votes

Barre de progression Android WebView

J'ai examiné une question similaire à celle-ci ici Mais comme je suis un débutant, quelqu'un pourrait-il m'expliquer comment faire pour que cela fonctionne dans une WebView ou au moins comment définir un délai de 10 secondes pour que les gens sachent que cela se charge ?

1 votes

C'est une copie presque exacte de stackoverflow.com/questions/2496119/ . Jetez-y un coup d'œil pour voir si cela vous aide. Si ce n'est pas le cas, modifiez votre question en précisant ce que vous ne parvenez pas à faire fonctionner.

1 votes

Le lien vers le site des développeurs Android contient le code complet permettant de créer une barre de chargement progressive. Avez-vous essayé d'utiliser leur exemple ? Une fois que vous l'avez fait, vous devriez être en mesure de l'adapter à vos besoins.

0 votes

Comment faire la même chose dans un fragment ? Je suis les mêmes étapes mais la barre de progression n'est pas visible.

144voto

Yahyaotaif Points 750

Pour une barre de progression horizontale, vous devez tout d'abord définir votre barre de progression et la lier à votre fichier XML comme suit, dans le champ onCreate :

final TextView txtview = (TextView)findViewById(R.id.tV1);
final ProgressBar pbar = (ProgressBar) findViewById(R.id.pB1);

Ensuite, vous pouvez utiliser la méthode onProgressChanged dans votre WebChromeClient :

MyView.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress) {
               if(progress < 100 && pbar.getVisibility() == ProgressBar.GONE){
                   pbar.setVisibility(ProgressBar.VISIBLE);
                   txtview.setVisibility(View.VISIBLE);
               }

               pbar.setProgress(progress);
               if(progress == 100) {
                   pbar.setVisibility(ProgressBar.GONE);
                   txtview.setVisibility(View.GONE);
               }
            }
        });

Après cela, dans votre mise en page vous avez quelque chose comme ceci

<TextView android:text="Loading, . . ." 
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:id="@+id/tV1" android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:textColor="#000000"></TextView>

<ProgressBar android:id="@+id/pB1"
    style="?android:attr/progressBarStyleHorizontal" android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:layout_centerVertical="true"
    android:padding="2dip">
</ProgressBar>

C'est comme ça que je l'ai fait dans mon application.

3 votes

Cette réponse devrait être considérée comme la meilleure car elle est à jour en termes de code déprécié dans les extraits de code de la documentation WebView ( developer.Android.com/reference/Android/webkit/WebView.html )

21voto

Max Marroni Points 324

Je viens de trouver ici un très bon exemple de la manière de procéder : http://developer.Android.com/reference/Android/webkit/WebView.html . Il suffit de changer le setprogress de :

activity.setProgress(progress * 1000);

à

activity.setProgress(progress * 100);

0 votes

Que faire dans le cas d'un fragment ?

1 votes

La fonction setProgress() de l'activité est désormais obsolète.

20voto

CommonsWare Points 402670

Si votre question est "comment savoir quand la page est chargée ?", alors :

  1. Créez une sous-classe personnalisée de WebViewClient en passant outre onPageFinished()
  2. Attachez une instance de votre WebViewClient à votre WebView via setWebViewClient()
  3. Configurer l'indicateur de progression indéfinie (barre, dialogue, RotateAnimation etc.) avant d'appeler loadUrl() sur le WebView
  4. Avoir onPageFinished() supprimer l'indicateur de progression

5voto

C'est vrai, il y a aussi des options plus complètes, comme changer le nom de l'application pour une phrase que vous voulez. Consultez ce tutoriel, il peut vous aider :

http://www.firstdroid.com/2010/08/04/adding-progress-bar-on-webview-Android-tutorials/

Dans ce tutoriel, vous avez un exemple complet de l'utilisation de la barre de progression dans une application webview.

Adrian.

-3voto

idan Points 651

Attendez que le processus soit terminé ...

while(webview.getProgress()< 100){}
progressBar.setVisibility(View.GONE);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X