本帖最后由 liu 于 2018-12-18 11:10 编辑
WebView
WebView可以用来显示网页,使用时需要在AndroidManifest.xml中添加"android.permission.INTERNET"权限
一、使用方法
1、加载网址 webView.loadUrl("http://www.baidu.com");
2、加载本地资源 webView.loadUrl("file:///android_asset/xxx.html");
二、WebSettings类 [Java] 纯文本查看 复制代码 //声明WebSettings子类 WebSettings webSettings = webView.getSettings();
//设置支持Javascript
webSettings.setJavaScriptEnabled(true);
//设置自适应屏幕
webSettings.setUseWideViewPort(true); //将图片调整到适合webview的大小
webSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小
//缩放操作
webSettings.setSupportZoom(true); //支持缩放,默认为true。是下面那个的前提。
webSettings.setBuiltInZoomControls(true); //设置内置的缩放控件。若为false,则该WebView不可缩放
webSettings.setDisplayZoomControls(false); //隐藏原生的缩放控件
//关闭webview中缓存
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//设置可以访问文件
webSettings.setAllowFileAccess(true);
//支持通过JS打开新窗口
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
//支持自动加载图片
webSettings.setLoadsImagesAutomatically(true);
//设置编码格式
webSettings.setDefaultTextEncodingName("utf-8");
三、WebViewClient类
[Java] 纯文本查看 复制代码 webView.setWebViewClient(new WebViewClient(){
//返回true时用WebView打开,返回false时调用系统浏览器或第三方浏览器
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
//页面开始加载时调用
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
//页面加载完毕时调用
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
//加载页面资源时会调用
@Override
public void onLoadResource(WebView view, String url) {
super.onLoadResource(view, url);
}
//加载页面的服务器出现错误时调用
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
}
//处理https请求时调用
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
super.onReceivedSslError(view, handler, error);
}
});
四、WebChromeClient类
[Java] 纯文本查看 复制代码 webView.setWebChromeClient(new WebChromeClient() {
//获取页面加载进度
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
}
//获取页面标题
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
}
//获取页面图标
@Override
public void onReceivedIcon(WebView view, Bitmap icon) {
super.onReceivedIcon(view, icon);
}
});
五、关于点击手机返回键WebView的后退或者退出
重写onKeyDown()方法
[Java] 纯文本查看 复制代码 @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (webView.canGoBack()) {
//返回上一页面
webView.goBack();
return true;
} else {
//退出程序
System.exit(0);
}
}
return super.onKeyDown(keyCode, event);
}
|