http://www.android100.org/html/201306/26/3290.html
webview有两个方法:setWebChromeClient和setWebClient
1.setWebChromeClient
主要处理解析,渲染网页等浏览器做的事情
WebChromeClient是辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等
例:
onCloseWindow(关闭WebView)
onCreateWindow()
onJsAlert (WebView上alert是弹不出来东西的,需要定制你的WebChromeClient处理弹出)
onJsPrompt
onJsConfirm
onProgressChanged //加载进度条
onReceivedIcon
onReceivedTitle
例如进度条:webview1.setWebChromeClient(new WebChromeClient()
{
public void onProgressChanged(WebView view, int progress)
{
setProgress(progress * 100);
if(progress == 100){
imageView1.setVisibility(View.GONE);
tv1.setVisibility(View.GONE);
pb1.setVisibility(View.GONE);
fy1.setVisibility(View.GONE);
}
}
}
);
2.WebViewClient
就是帮助WebView处理各种通知、请求事件的,具体来说包括:
onLoadResource
onPageStart
onPageFinish
onReceiveError
onReceivedHttpAuthRequest
webview1.setWebViewClient(new WebViewClient() { public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
{ // Handle the error
Toast.makeText(getApplicationContext(), "网络连接失败 ,请连接网络。", Toast.LENGTH_SHORT).show();
} public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); //设置字符集编码
webview1.getSettings().setDefaultTextEncodingName("UTF-8");
webview1.loadUrl(http://www.android100.org/);
例如:
package com.android.webview.activity;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.webkit.WebSettings;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
@SuppressLint("SetJavaScriptEnabled")
public class MainActivity extends Activity {
private WebView webviewBasic;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.weblayout);
//加载web资源
WebView webviewBasic=(WebView)findViewById(R.id.webview);
webviewBasic.setWebChromeClient(new WebChromeClient(){
public void onProgressChanged(WebView view,int progress){
MainActivity.this.setProgress(progress*100);
}
});
// webviewBasic.loadUrl("http://www.baidu.com");
webviewBasic.loadUrl("http://wap.sht.yxtyw.com/");
WebSettings setting=webviewBasic.getSettings();
setting.setJavaScriptEnabled(true);
// init();
}
//在程序内打开网页
// private void init(){
// webviewBasic=(WebView)findViewById(R.id.webview);
// //webview加载web资源
// webviewBasic.loadUrl("http://www.baidu.com");
// //覆盖webview默认使用第三方或系统默认浏览器打开网页的行为,使网页webView打开
// webviewBasic.setWebViewClient(new WebViewClient(){
// @Override
// public boolean shouldOverrideUrlLoading(WebView view,String url){
// view.loadUrl(url);
// //返回值是true的时候控制区webview打开,
// //返回值是false的时候调用系统浏览器或者第三方浏览器
// return true;
// }
// });
//
// }
//加载JavaScript页面
// private void init(){
//
// webviewBasic=(WebView)findViewById(R.id.webview);
// webviewBasic.loadUrl("http://wap.sht.yxtyw.com/");
// webviewBasic.setWebViewClient(new WebViewClient(){
// @Override
// public boolean shouldOverrideUrlLoading(WebView view,String url){
// view.loadUrl(url);
// return true;
// }
// });
// //启用支持JavaScript
// WebSettings settings=webviewBasic.getSettings();
// settings.setJavaScriptEnabled(true);
//判断页面加载过程
// webviewBasic.setWebChromeClient(new WebChromeClient(){
// @Override
// public void onProgressChanged(WebView view,int newProgress){
if(newProgress==100){
Toast.makeText(getApplicationContext(), "加载完成", Toast.LENGTH_LONG).show();
}
else{
Toast.makeText(getApplicationContext(), "正在加载", Toast.LENGTH_LONG).show();
}
//
// MainActivity.this.setProgress(newProgress*100);
//
// }
// });
//
// }
//如果希望浏览的网页后退而不是退出浏览器,需要WebView覆盖URL加载,让它自动生成访问记录,那样就可以通过前进或者后退访问已访问过的站点
//改写物理按键-----返回的逻辑
@Override
public boolean onKeyDown(int keyCode,KeyEvent event){
if(keyCode==KeyEvent.KEYCODE_BACK){
webviewBasic.goBack();//返回上一页
return true;
}
else{
System.exit(0);//退出程序
}
return super.onKeyDown(keyCode, event);
}