onProgressChanged事件。
在WebView的设计中,不是什么事都要WebView类干的,有些杂事是分给其他人的,这样WebView专心干好自己的解析、渲染工作就行了。
WebViewClient就是帮助WebView处理各种通知、请求事件的,具体来说包括:
onLoadResource
onPageStart
onPageFinish
onReceiveError
onReceivedHttpAuthRequest
WebChromeClient是辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等,包括:
onCloseWindow(关闭WebView)
onCreateWindow()
onJsAlert (WebView上alert是弹不出来东西的,需要定制你的WebChromeClient处理弹出)
onJsPrompt
onJsConfirm
onProgressChanged
onReceivedIcon
onReceivedTitle
WebSettings webSettings = communicate_web.getSettings();
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//webSettings.setAllowFileAccessFromFileURLs(true);
webSettings.setAllowFileAccess(true);
communicate_web.getSettings().setJavaScriptEnabled(true);
communicate_web.setHorizontalScrollBarEnabled(false);
communicate_web.setVerticalScrollBarEnabled(false);
communicate_web.addJavascriptInterface(new Object() {
@JavascriptInterface
public void Communicate(final String str) {
handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Message msg = new Message();
msg.what = 1;
msg.obj = str;
handler.sendMessage(msg);
}
});
}
}, "communicate");
communicate_web.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
// TODO Auto-generated method stub
if (newProgress == 100) {
communicate_progress.setVisibility(View.GONE);
LogUtil.i(TAG, "进度条完成...");
}
super.onProgressChanged(view, newProgress);
}
});
communicate_web.setWebViewClient(new WebViewClient() {
@Override
public
boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
// TODO Auto-generated method stub
LogUtil.i(TAG, "获取到的...onReceivedError");
super.onReceivedError(view, errorCode, description, failingUrl);
}
});
WebSettings webSettings = communicate_web.getSettings();
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//webSettings.setAllowFileAccessFromFileURLs(true);
webSettings.setAllowFileAccess(true);
communicate_web.getSettings().setJavaScriptEnabled(true);
communicate_web.setHorizontalScrollBarEnabled(false);
communicate_web.setVerticalScrollBarEnabled(false);
web调用android的方法
communicate_web.addJavascriptInterface(new Object() {
@JavascriptInterface
public void Communicate(final String str) {
handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Message msg = new Message();
msg.what = 1;
msg.obj = str;
handler.sendMessage(msg);
}
});
}
}, "communicate");
communicate_web.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
// TODO Auto-generated method stub
if (newProgress == 100) {
communicate_progress.setVisibility(View.GONE);
LogUtil.i(TAG, "进度条完成...");
}
super.onProgressChanged(view, newProgress);
}
});
communicate_web.setWebViewClient(new WebViewClient() {
调用应用内的浏览器
@Override
public
boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
// TODO Auto-generated method stub
LogUtil.i(TAG, "获取到的...onReceivedError");
super.onReceivedError(view, errorCode, description, failingUrl);
}
});
WebSettings webSettings = communicate_web.getSettings();
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//webSettings.setAllowFileAccessFromFileURLs(true);
webSettings.setAllowFileAccess(true);
communicate_web.getSettings().setJavaScriptEnabled(true);
communicate_web.setHorizontalScrollBarEnabled(false);
communicate_web.setVerticalScrollBarEnabled(false);
communicate_web.addJavascriptInterface(new Object() {
@JavascriptInterface
public void Communicate(final String str) {
handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Message msg = new Message();
msg.what = 1;
msg.obj = str;
handler.sendMessage(msg);
}
});
}
}, "communicate");
communicate_web.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
// TODO Auto-generated method stub
if (newProgress == 100) {
communicate_progress.setVisibility(View.GONE);
LogUtil.i(TAG, "进度条完成...");
}
super.onProgressChanged(view, newProgress);
}
});
communicate_web.setWebViewClient(new WebViewClient() {
@Override
public
boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
// TODO Auto-generated method stub
LogUtil.i(TAG, "获取到的...onReceivedError");
super.onReceivedError(view, errorCode, description, failingUrl);
}
});
android调用web端的方法
public void BackBottom() {
detail_web.loadUrl("javascript:backBottom()");
}
WebSettings常用方法:
setAllowFileAccess 启用或禁止WebView访问文件数据
setBlockNetworkImage 是否显示网络图像
setBuiltInZoomControls 设置是否支持缩放
setCacheMode 设置缓冲的模式
setDefaultFontSize 设置默认的字体大小
setDefaultTextEncodingName 设置在解码时使用的默认编码
setFixedFontFamily 设置固定使用的字体
setJavaSciptEnabled 设置是否支持Javascript
setLayoutAlgorithm 设置布局方式
setLightTouchEnabled 设置用鼠标激活被选项
setSupportZoom 设置是否支持变焦
WebViewClient常用方法:
doUpdate VisitedHistory 更新历史记录
onFormResubmission 应用程序重新请求网页数据
onLoadResource 加载指定地址提供的资源
onPageFinished 网页加载完毕
onPageStarted 网页开始加载
onReceivedError 报告错误信息
onScaleChanged WebView发生改变
shouldOverrideUrlLoading 控制新的连接在当前WebView中打开
WebChromeClient常用方法:
onCloseWindow 关闭WebView
onCreateWindow 创建WebView
onJsAlert 处理Javascript中的Alert对话框
onJsConfirm处理Javascript中的Confirm对话框
onJsPrompt处理Javascript中的Prompt对话框
onProgressChanged 加载进度条改变
onReceivedlcon 网页图标更改
onReceivedTitle 网页Title更改
onRequestFocus WebView显示焦点