package com.v7lin.android.webkit; import com.v7lin.android.env.webkit.CompatWebChromeClient; import com.v7lin.android.env.webkit.CompatWebView; import com.v7lin.android.env.webkit.CompatWebViewClient; import com.v7lin.android.env.webkit.WebApiClient; import android.content.Context; import android.graphics.Bitmap; import android.util.AttributeSet; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; /** * WebView 的普通用法 * * @author v7lin E-mail:v7lin@qq.com */ public class VariWebView extends CompatWebView { private CompatWebViewClient mWebViewClient; private CompatWebChromeClient mWebChromeClient; private WebApiClient mDelegateWebApiClient; public VariWebView(Context context) { super(context); setup(); } public VariWebView(Context context, AttributeSet attrs) { super(context, attrs); setup(); } public VariWebView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setup(); } private void setup() { mWebViewClient = new CompatWebViewClient(getContext(), mWebApiClient); super.setWebViewClient(mWebViewClient); mWebChromeClient = new CompatWebChromeClient(mWebApiClient); super.setWebChromeClient(mWebChromeClient); } private WebApiClient mWebApiClient = new WebApiClient() { @Override public void doUpdateVisitedHistory(WebView view, String url, boolean isReload) { super.doUpdateVisitedHistory(view, url, isReload); if (mDelegateWebApiClient != null) { mDelegateWebApiClient.doUpdateVisitedHistory(view, url, isReload); } } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return mDelegateWebApiClient != null ? mDelegateWebApiClient.shouldOverrideUrlLoading(view, url) : super.shouldOverrideUrlLoading(view, url); } @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); if (mDelegateWebApiClient != null) { mDelegateWebApiClient.onProgressChanged(view, newProgress); } } @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); if (mDelegateWebApiClient != null) { mDelegateWebApiClient.onReceivedTitle(view, title); } } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); if (mDelegateWebApiClient != null) { mDelegateWebApiClient.onPageStarted(view, url, favicon); } } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); if (mDelegateWebApiClient != null) { mDelegateWebApiClient.onPageFinished(view, url); } } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { super.onReceivedError(view, errorCode, description, failingUrl); if (mDelegateWebApiClient != null) { mDelegateWebApiClient.onReceivedError(view, errorCode, description, failingUrl); } } }; public void setWebApiClient(WebApiClient client) { this.mDelegateWebApiClient = client; } @Deprecated @Override public void setWebViewClient(WebViewClient client) { // super.setWebViewClient(client); } @Deprecated @Override public void setWebChromeClient(WebChromeClient client) { // super.setWebChromeClient(client); } }