package com.aswifter.material.widget; import android.content.Context; import android.os.Handler; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; public class ProgressWebView extends WebView{ private WebViewProgressBar progressBar; private Handler handler; private WebView _this; public ProgressWebView(Context context, AttributeSet attrs) { super(context, attrs); progressBar = new WebViewProgressBar(context); progressBar.setLayoutParams(new ViewGroup.LayoutParams (ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); progressBar.setVisibility(GONE); addView(progressBar); handler = new Handler(); _this = this; setWebChromeClient(new MyWebChromeClient()); setWebViewClient(new MyWebClient()); } private class MyWebChromeClient extends WebChromeClient { @Override public void onProgressChanged(WebView view, int newProgress) { if(newProgress == 100){ progressBar.setProgress(100); handler.postDelayed(runnable,200); }else if(progressBar.getVisibility() == GONE){ progressBar.setVisibility(VISIBLE); } if(newProgress < 5){ newProgress = 5; } progressBar.setProgress(newProgress); super.onProgressChanged(view, newProgress); } } private class MyWebClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { _this.loadUrl(url); return true; } } private Runnable runnable = new Runnable() { @Override public void run() { progressBar.setVisibility(View.GONE); } }; }