package com.stardust.widget; import android.content.Context; import android.graphics.Bitmap; import android.os.Build; import android.support.annotation.RequiresApi; import android.support.v4.widget.SwipeRefreshLayout; import android.util.AttributeSet; import android.webkit.WebChromeClient; import android.webkit.WebResourceRequest; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.FrameLayout; import android.widget.ProgressBar; import com.stardust.scriptdroid.R; import org.androidannotations.annotations.ViewById; /** * Created by Stardust on 2017/8/22. */ public class EWebView extends FrameLayout implements SwipeRefreshLayout.OnRefreshListener { private WebView mWebView; private ProgressBar mProgressBar; SwipeRefreshLayout mSwipeRefreshLayout; public EWebView(Context context) { super(context); init(); } public EWebView(Context context, AttributeSet attrs) { super(context, attrs); init(); } private void init() { inflate(getContext(), R.layout.ewebview, this); mWebView = (WebView) findViewById(R.id.web_view); mProgressBar = (ProgressBar) findViewById(R.id.progress_bar); mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout); mSwipeRefreshLayout.setOnRefreshListener(this); setUpWebView(); } private void setUpWebView() { WebSettings settings = mWebView.getSettings(); settings.setUseWideViewPort(true); settings.setBuiltInZoomControls(true); settings.setSupportZoom(true); settings.setLoadWithOverviewMode(true); settings.setJavaScriptEnabled(true); mWebView.setWebViewClient(new MyWebViewClient()); mWebView.setWebChromeClient(new MyWebChromeClient()); } public WebView getWebView() { return mWebView; } @Override public void onRefresh() { mWebView.reload(); } private class MyWebChromeClient extends WebChromeClient { @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); mProgressBar.setProgress(newProgress); } } private class MyWebViewClient extends WebViewClient { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); mProgressBar.setProgress(0); mProgressBar.setVisibility(VISIBLE); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); mProgressBar.setVisibility(GONE); mSwipeRefreshLayout.setRefreshing(false); } @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { view.loadUrl(request.getUrl().toString()); return true; } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } } }