Диалоговое окно загрузки Android webview



Я пытаюсь реализовать диалог загрузки в моем приложении webview, но что бы я ни делал, это просто не будет работать.



Я хочу, чтобы каждый раз, когда кто-то нажимает ссылку в webview, диалоговое окно загрузки должно всплывать следующим образом:





И когда загрузка закончена, она должна исчезнуть. Может ли кто-нибудь показать мне, как это сделать в моем собственном источнике? Я пробовал много вещей, но всегда есть проблема, поэтому я действительно не знаю, как это сделать.

Это мой WebviewActivity:



import android.content.res.Configuration;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class WebviewActivity extends MainActivity {

private WebView myWebView;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);

myWebView = (WebView)findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.setWebViewClient(new WebViewClient());

myWebView.requestFocus(View.FOCUS_DOWN);
myWebView.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_UP:
if (!v.hasFocus()) {
v.requestFocus();
}
break;
}
return false;
}
});
}

@Override
public void onResume() {
super.onResume();
if ( isOnline() == true )
myWebView.loadUrl(webLink);
else if ( isOnline() == false )
showNoConnectionDialog();
}

@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
}
}


Большое Спасибо за вашу помощь!!

574   3  

3 ответов:

Вы должны переопределить WebViewClient следующим образом,

      webview.setWebViewClient(new WebViewClient(){

            @Override
            public void onPageFinished(WebView view, final String url) {

                progressDialog.cancel();


            }
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {

                progressDialog.show();
            }
      });

webview.loadUrl(TwitterUrl);

Вот мое окончательное решение:

    myWebView.setWebViewClient(new WebViewClient(){
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            progressDialog.show();
            view.loadUrl(url);
            return true;                
        }
        @Override
        public void onPageFinished(WebView view, final String url) {
            progressDialog.dismiss();
        }
    });

Это может быть возможно с WebChromeClient. Это действительно сработало для меня.

Фрагмент кода:

progressDialog.show(); // Add before page load
webView.setWebChromeClient(new HelpWebChromeClient());
private class HelpWebChromeClient extends WebChromeClient {
   @Override
   public void onProgressChanged(WebView view, int newProgress) {
     if(newProgress == 100)
        progressDialog.dismiss();
     }
 }

Comments

    Ничего не найдено.