WebView解析
来源:互联网 发布:打卡机怎么下载数据 编辑:程序博客网 时间:2024/05/16 08:02
一、WebView的添加同绝大多数控件一样,主要有两种添加方式:第一,类似于普通控件的定义,先在xml文件里添加webview控件,再通过findViewById()获得;第二种方式如下:
WebView webView = new WebView(this);
setContentView(webView);
二、WebView资源的加载主要有两种
网页的加载:webView,loadUrl("http://www.hzeduask.com"); //这里是全部域名
本地文件的加载:webView.loadUrl("file:///android_asset/aaa.html"); 文件放在目录下assets文件夹下,也可以加载sd卡本地html文件(file://不能少)
三、WebView属性设置
// 访问页面中有JavaScript,必须设置支持JavaScript
webView.getSettings().setJavaScriptEnabled(true);
// 启用WebView访问文件数据
webView.getSettings().setAllowFileAccess(true);
// 设置支持缩放
webView.getSettings().setSupportZoom(true);
webView.getSettings().setBuiltInZoomControls(true);
// 设置缩放比例
webView.setInitialScale(35);
// 设置是否显示网络图像---true,封锁网络图片,不显示 false----允许显示网络图片
webView.getSettings().setBlockNetworkImage(false);
// 设置支持插件
webView.getSettings().setPluginsEnabled(true);
// 将图片调整到适合WebView大小
webView.getSettings().setUseWideViewPort(true);
// 支持多窗口
webView.getSettings().supportMultipleWindows();
// 设置自动加载图片
webView.getSettings().setLoadsImagesAutomatically(true);
// 设置渲染优先级
webView.getSettings().setRenderPriority(RenderPriority.HIGH);
// 设置默认字体大小
webView.getSettings().setDefaultFontSize(50);
// 如果需要用户输入账号密码,必须设置支持手势焦点
webView.requestFocusFromTouch();
// 取消滚动条
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
WebView缓存设置 setCacheMode()设置缓存模式,参数
WebSettings.LOAD_CACHE_ELSE_NETWORK---只要本地有,无论是否过期,都使用缓存数据;只要打开过一次就使用缓存数据
WebSettings.LOAD_CACHE_ONLY---只使用缓存
WebSettings。LOAD_NO_CACHE---不使用缓存
WebSettings.LOAD_DEFAULT---控制器决定是否从网络获取数据,无论如果都从网络获取数据,没有网络就报错
WebSettings.LOAD_NORMAL---同默认
// 设置缓存模式
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
// 启用缓存
webView.getSettings().setAppCacheEnabled(true);
// 设置最大缓存容量---100M
webView.getSettings().setAppCacheMaxSize(1024 * 1024 * 100);
四、辅助方法的添加
1、WebViewClient主要为WebView处理各种通知、请求事件。setWebViewClient()该方法作用于点击链接时调用,点击跳转时,加载新的webview资源,并可以在加载前后添加操作,比如添加缓冲对话 框,该方法的作用使得点击链接的响应在WebView内执行,而不是手机浏览器。
webView.setWebViewClient(new WebViewClient() {
//用于加载新WebView,返回true代表着用完就消费掉
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
//用于加载新Webview之前,一般在此加载缓冲区
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
showDialog(1);
}
//用于加载新Webview之后,一般在此消除缓冲区
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
removeDialog(1);
}
//加载错误时调用,一般提示错误信息
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
Toast.makeText(WebViewDemo.this, "页面加载错误...",
Toast.LENGTH_SHORT).show();
}
});
2.WebChromeClient主要辅助WebView处理Javascript的对话框、网站图标、网站title、加载进度等
webView.setWebChromeClient(new WebChromeClient(){
//打开新WebView时,设置加载进度,进度显示于最上方标题位置
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
WebViewDemo.this.setProgress(newProgress*100);
}
//设置新WebView的标题,显示于最上方标题位置
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
WebViewDemo.this.setTitle(title);
}
//创建新WebView,加载新资源,并设置
@Override
public boolean onCreateWindow(WebView view, boolean isDialog,
boolean isUserGesture, Message resultMsg) {
WebView child=new WebView(WebViewDemo.this);
child.getSettings().setJavaScriptEnabled(true);
child.getSettings().setAllowFileAccess(true);
child.getSettings().setSupportZoom(true);
child.getSettings().setBuiltInZoomControls(true);
child.setInitialScale(35);
child.getSettings().setBlockNetworkImage(true);
child.getSettings().setPluginsEnabled(true);
child.getSettings().setUseWideViewPort(true);
child.getSettings().supportMultipleWindows();
child.getSettings().setLoadsImagesAutomatically(true);
child.getSettings().setLoadWithOverviewMode(true);
//通过WebViewTransport设置新WebView
child.setWebChromeClient(this);
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(child);
resultMsg.sendToTarget();
return true;
}
});
五、注意事项
1、WebView的使用需要添加网络权限
<uses-permission android:name="android.permission.INTERNET"/>
2、WebView的返回需要重写Activity的onKeyDown方法,使得回退返回至上一级,如果不重写,将会 完全退出,代码如下:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
- WebView解析
- webView 解析
- WebView解析
- WebView解析
- android WebView解析
- android WebView解析
- android WebView解析
- Android WebView类解析
- WebView解析文档
- [android] webview解析
- Webview解析html源码
- WebView解析之设置
- Android--webview 漏洞 解析
- webview jsoup解析html
- webview jsoup解析html
- android WebView解析
- android WebView 详细解析
- WebView 的API解析
- IDEA跑Tomcat异常
- Linux内核设计与实现读书笔记一——Linux内核简介(附思维导图)
- POJ1129 Channel Allocation
- 原型设计工具Axure RP 7 汉化包+元件库汉化+注册码
- 【leetcode】path-sum
- WebView解析
- @Target Annotation的使用
- Python提供的基本数据类型
- 李开复:谷歌靠云计算成就最好搜索引擎
- 使用codeblocks(WINDOWS7下)编写WIN32 GUI应用程序时一些注意事项
- 轩辕IT培训 Linux C++ 远程全科班 Boost_ACE
- C++继承的一点理解
- hdu1325is it a tree?&&poj1308 is it a tree?(并查集)
- Python链表部分函数用法(1)