开启的WebView的一些功能。
重写了一部份可能用到的代码。
import android.content.Context;
import android.util.AttributeSet;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebSettings.RenderPriority;
/**
* A convenient extension of WebView.
*/
public class CustomWebView extends WebView{
private int mProgress = 100;
private boolean mIsLoading = false;
private String mLoadedUrl;
private CustomWebViewClient webViewCleint;
private CustomWebChromeClient webChromeClient;
public void CustomWebViewInit(Context context) {
webViewCleint = new CustomWebViewClient();
webChromeClient = new CustomWebChromeClient();
setWebViewClient(webViewCleint);
setWebChromeClient(webChromeClient);
initializeOptions();
initProgressBar();
}
private void initProgressBar() {
// mProgressBar = new ProgressDialog(mContext);
// mProgressBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);
// mProgressBar.setMessage(mContext.getString(R.string.inforGetting));
}
public CustomWebView(Context context) {
super(context);
CustomWebViewInit(context);
}
public CustomWebView(Context context, AttributeSet attrs) {
super(context, attrs);
CustomWebViewInit(context);
}
/**
* Initialize the WebView with the options set by the user through preferences.
*/
public void initializeOptions() {
WebSettings settings = getSettings();
setScrollbarFadingEnabled(true);
// , `setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET);
setHorizontalScrollBarEnabled(false);
setVerticalScrollBarEnabled(false);
setDrawingCacheEnabled(true);
setScrollbarFadingEnabled(true);
setDrawingCacheEnabled(true);
settings.setDefaultZoom(WebSettings.ZoomDensity.MEDIUM);
settings.setLoadWithOverviewMode(true);
settings.setDatabaseEnabled(true);
settings.setDomStorageEnabled(true);
settings.setNeedInitialFocus(false);
settings.setSupportZoom(true);
settings.setAppCacheEnabled(true);
settings.setDatabaseEnabled(true);
settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
settings.setDomStorageEnabled(true);
settings.setRenderPriority(RenderPriority.HIGH);
settings.setJavaScriptEnabled(true);
settings.setLoadsImagesAutomatically(true);
settings.setUseWideViewPort(false);
// String USER_AGENT_DESKTOP = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7";
// settings.setUserAgentString(USER_AGENT_DESKTOP);
}
// @Override
// public boolean onTouchEvent(MotionEvent ev) {
// return super.onTouchEvent(ev);
// }
//
@Override
public void loadUrl(String url) {
super.loadUrl(url);
mLoadedUrl = url;
}
/**
* Set the current loading progress of this view.
* @param progress The current loading progress.
*/
public void setProgress(int progress) {
mProgress = progress;
}
/**
* Get the current loading progress of the view.
* @return The current loading progress of the view.
*/
public int getProgress() {
return mProgress;
}
/**
* Triggered when a new page loading is requested.
*/
public void notifyPageStarted() {
mIsLoading = true;
}
/**
* Triggered when the page has finished loading.
*/
public void notifyPageFinished() {
mProgress = 100;
mIsLoading = false;
}
/**
* Check if the view is currently loading.
* @return True if the view is currently loading.
*/
public boolean isLoading() {
return mIsLoading;
}
/**
* Get the loaded url, e.g. the one asked by the user, without redirections.
* @return The loaded url.
*/
public String getLoadedUrl() {
return mLoadedUrl;
}
/**
* Reset the loaded url.
*/
public void resetLoadedUrl() {
mLoadedUrl = null;
}
public boolean isSameUrl(String url) {
if (url != null) {
return url.equalsIgnoreCase(this.getUrl());
}
return false;
}
}