webView的基本参数设置
// WebSettings:webView的配置参数
WebSettings settings = mWebView.getSettings();
// 设置支持js
settings.setJavaScriptEnabled(true);
// 设置缩放按钮
settings.setBuiltInZoomControls(true);
// 设置双击缩放
settings.setUseWideViewPort(true);
webView高级回调对象WebViewClient
//覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
//返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
view.loadUrl(url);
return true;
}
});
// 回调对象:提供处理方法的对象
// WebViewClient:webView的回调对象可以防止打开系统自带的浏览器
// 同时提供三个处理方法
// 网页开始加载onPageStarted
// 网页结束加载onPageFinished
// 重写加载地址
mWebView.setWebViewClient(new WebViewClient() {
/***
* 方法 加载前显示缓冲视图
*
* @param view
* @param url
* @param favicon
*/
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
findViewById(R.id.progressBar).setVisibility(View.VISIBLE);
}
/***
* 方法 关闭缓冲视图
*
* @param view
* @param url
*/
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
findViewById(R.id.progressBar).setVisibility(View.GONE);
}
/***
* 方法 重写地址的加载路径 针对跳转的路径而不是loadUrl的路径
*
* @param view
* @param url
* @return
*/
// @Override
// public boolean shouldOverrideUrlLoading(WebView view, String url)
// {
// Log.i("wzx", url);
// // mWebView.loadUrl("http://192.168.22.205:8080/");
// return true;//重写了地址
// }
});
webView高级回调对象WebChromeClient
// 再学习一个回调对象
// WebChromeClient:谷歌浏览器 提供进度加载方法的回调对象
//onProgressChanged:用来获取加载中的进度变化
mWebView.setWebChromeClient(new WebChromeClient() {
/***
* 方法 进度加载方法
*
* @param view
* @param newProgress
* 加载中的进度百分比
*/
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
Log.i("wzx", "newProgress" + newProgress);
ProgressBar percent = (ProgressBar) findViewById(R.id.progress_percent);
if (newProgress == 100) {
// 在加载完成可以关闭水平进度的显示
percent.setVisibility(View.GONE);
} else {
percent.setVisibility(View.VISIBLE);
percent.setProgress(newProgress);
}
}
});
mWebView.getSettings().setTextSize(TextSize.LARGEST); //超大号字体
mWebView.getSettings().setTextSize(TextSize.LARGER); //大号字体
mWebView.getSettings().setTextSize(TextSize.NORMAL); //正常字体
mWebView.getSettings().setTextSize(TextSize.SMALLER); //小号字体
mWebView.getSettings().setTextSize(TextSize.SMALLEST); //超小号字体
如果希望浏览的网页后退而不是退出浏览器,需要WebView覆盖URL加载,让它自动生成历史访问记录,那样就可以通过前进或后退访问已访问过的站点。
//改写物理按键——返回的逻辑
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode==KeyEvent.KEYCODE_BACK)
{
if(webView.canGoBack())
{
webView.goBack();//返回上一页面
return true;
}
else
{
System.exit(0);//退出程序
}
}
return super.onKeyDown(keyCode, event);
}
WebView的缓存
优先使用缓存
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
不使用缓存:
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
if (!isNetworkConnected()) {
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
}
webView.loadUrl(URL);