Android WebView详解
来源:互联网 发布:for在c语言中的作用 编辑:程序博客网 时间:2024/05/01 14:32
1.在代码中创建
WebView webView=new WebView(this);
setContentView(webview);
2.在xml文件中创建
webview=(WebView) findViewById(R.id.webview);
WebView能加载显示网页,可以将其视为一个可以嵌入在Android界面中的浏览器。
//如果页面中使用了JavaScript,不加改代码页面不显示。
webView.getSettings().setJavaScriptEnabled(true);
//加载页面时如果不加改代码,页面会跳转到系统自带浏览器显示。webView.setWebViewClient(new WebViewClient(){ public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;//返回值为true时在WebView中打开,为false时调用浏览器打开
}
});
webview.loadUrl("http://www.baidu.com");//网络地址http://,本地地址file:///webview.loadUrl("file:///android_asset/www/text.html");//打开assets文件下的网页
/**
* 常用属性
* 1、页面缩放
* 适应手机屏幕:
* */
// webview.getSettings().setUseWideViewPort(true);
// webview.getSettings().setLoadWithOverviewMode(true);
/**
* 放大设置
*
* */
// webview.getSettings().setDisplayZoomControls(true);
//// 无限放大
// webview.getSettings().setSupportZoom(true);
// webview.getSettings().setBuiltInZoomControls(true);
// 比例缩放
// webview.setInitialScale(50);
/**
* 页面缓存
*
* /data/data/package_name/cache/
* /data/data/package_name/database/webview.db
* /data/data/package_name/database/webviewCache.db
*
* */
/**
* 缓存模式(5种)
*
* LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据
* LOAD_DEFAULT: 根据cache-control决定是否从网络上取数据。
* LOAD_CACHE_NORMAL: API level 17中已经废弃, 从API level 11开始作用同LOAD_DEFAULT模式
* LOAD_NO_CACHE: 不使用缓存,只从网络获取数据.
* LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。
* */
/**
* 优先缓存、
*
* 设置获得设置对象
* WebSettings webSettings= webView.getSettings();
* 设置缓存的模式
* webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
* webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);// 默认不使用缓存!
* */
// 前进后退
// public boolean onKeyDown(int keyCode, KeyEvent event) {
// if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
// webView.goBack();
// return true;
// } else {
// //结束当前页
// return super.onKeyDown(keyCode, event);
// }
// }
/**
* Table标签显示
*
* */
// webview.setWebChromeClient(new WebChromeClient(){
// @Override
// public void onReceivedTitle(WebView view, String title) {
// //可以使用TextView显示title标签
// textview.setText(title);
// super.onReceivedTitle(view, title);
//
//
// }
// });
/**
* 错误页面设置
*
*
* */
/* webview.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
return true;
}
// 显示错误页面
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
// TODO Auto-generated method stub
view.loadUrl("file:///android_asset/www/eor.html");
super.onReceivedError(view, errorCode, description, failingUrl);
}
});
*/
webview.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
if(url.endsWith("?cx")){
Toast.makeText(MainActivity.this, "点击了登录按钮!", Toast.LENGTH_SHORT).show();
return true;
}
view.loadUrl(url);
return true;
}
});
/* *//**
*
* web中加载进度条
* 需要自己定义一个进度条控件
* 这里已经定义好了progressBar
* *//*
webview.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
// TODO Auto-generated method stub
if(newProgress<1000){
//更新当前进度
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(newProgress);
}else{
//加载完成因此进度条
progressBar.setVisibility(View.GONE);
}
super.onProgressChanged(view, newProgress);
}
});*/
webview.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "开始加载!", Toast.LENGTH_SHORT).show();
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "加载结束!", Toast.LENGTH_SHORT).show();
super.onPageFinished(view, url);
}
});
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显示焦点
- Android WebView(一) WebView详解
- Android中WebView详解
- Android WebView 详解
- Android WebView应用详解
- android之WebView详解
- Android中WebView详解
- Android WebView详解
- Android中WebView详解
- Android WebView详解
- Android webview使用详解
- Android webview使用详解
- android WebView全面详解
- Android:WebView全面详解
- Android webview使用详解
- Android webview使用详解
- Android webview使用详解
- Android WebView详解
- android webview 操作详解。
- Android获取通讯录联系人,右侧字母滑动索引
- Proguard混淆器
- 时间工具类,一些常见的时间实现方法
- selenium+java+testNG+pageObject深入理解自动化测试框架
- BZOJ 3931 CQOI2015 网络吞吐量 Dijkstra+网络流
- Android WebView详解
- spring-data-jpa 学习笔记一(转)
- 第二章第二十一题
- C++作业
- 第二章第二十二题
- Gray Code
- dbca建库报错exception in thread main
- selenium+java自动化测试框架之元素管理篇(yaml)
- [leetcode]48 Binary Tree Right Side View