android webView的使用
昨天,自己用到了webView加载本地文件的内容,当时有很多内容忘记了,所以在网上查找了资料。今天,自己又查找了webview的资料,把这个知识点记录一下,避免以后再去查找资料。
1. 简介
WebView是一个基于webkit引擎、展现web页面的控件。
Android的Webview在低版本和高版本采用了不同的webkit版本内核,4.4后直接使用了Chrome
2. 作用
- 显示和渲染Web页面
- 直接使用html文件(网络上或本地assets中)作布局
- 可和JavaScript交互调用
WebView控件功能强大,除了具有一般View的属性和设置外,还可以对url请求、页面加载、渲染、页面交互进行强大的处理。
3. 使用介绍
一般来说Webview可单独使用,可联合其子类一起使用,所以接下来,我会介绍:
- Webview自身的常见方法;
- Webview的最常用的子类
(WebSettings类、WebViewClient类、WebChromeClient类) - Android和Js的交互
这里的内容非常的多,所以我只简单介绍WebSettings类,其他的大家有兴趣可以自己去网上看看。
//声明WebSettings子类
WebSettings webSettings = webView.getSettings();//如果访问的页面中要与Javascript交互,则webview必须设置支持Javascript
webSettings.setJavaScriptEnabled(true); //支持插件
webSettings.setPluginsEnabled(true); //设置自适应屏幕,两者合用
webSettings.setUseWideViewPort(true); //将图片调整到适合webview的大小
webSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小//缩放操作
webSettings.setSupportZoom(true); //支持缩放,默认为true。是下面那个的前提。
webSettings.setBuiltInZoomControls(true); //设置内置的缩放控件。若为false,则该WebView不可缩放
webSettings.setDisplayZoomControls(false); //隐藏原生的缩放控件//其他细节操作
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //关闭webview中缓存
webSettings.setAllowFileAccess(true); //设置可以访问文件
webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口
webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片
webSettings.setDefaultTextEncodingName("utf-8");//设置编码格式
常见用法:设置WebView缓存
- 当加载 html 页面时,WebView会在/data/data/包名目录下生成 database 与 cache 两个文件夹
- 请求的 URL记录保存在 WebViewCache.db,而 URL的内容是保存在 WebViewCache 文件夹下
- 是否启用缓存:
//优先使用缓存: WebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //缓存模式如下://LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据//LOAD_DEFAULT: (默认)根据cache-control决定是否从网络上取数据。//LOAD_NO_CACHE: 不使用缓存,只从网络获取数据.//LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。//不使用缓存: WebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
加载网页的代码
加载本地文件:webView.loadUrl("file:///android_asset/xxx.html");
加载网页:webView.loadUrl(http://baidu.com);
接下来写一个实例给大家看看,因为内容比较多,而且很多功能其实大家也用不到,所以简单讲讲就好了。
/**** * WebView加载本地文件和实现JS点击效果* * @author zq**/
public class MainActivity extends Activity {private WebView webView;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}private void initView() {// TODO Auto-generated method stub// 获取webview控件webView = (WebView) findViewById(R.id.activity_webview);// 获取WebView的设置WebSettings webSettings = webView.getSettings();// 将JavaScript设置为可用,这一句话是必须的,不然所做一切都是徒劳的webSettings.setJavaScriptEnabled(true);// 给webview添加JavaScript接口webView.addJavascriptInterface(new JsInterface(), "control");// 通过webview加载html页面webView.loadUrl("file:///android_asset/l.html");}public class JsInterface {@JavascriptInterfacepublic void showToast(String toast) {Toast.makeText(MainActivity.this, toast, Toast.LENGTH_SHORT).show();}public void log(final String msg) {webView.post(new Runnable() {@Overridepublic void run() {webView.loadUrl("javascript log(" + "'" + msg + "'" + ")");}});}}}
这里是在界面定义一个webView,然后加载本地的l.html文件,这里注意一下,本地的html资源要放在assets文件夹下,如果没有assets文件夹,自己在工程里建一个,与res文件夹在同一级。然后调用本地文件时的代码是webView.loadUrl(file:///android_asset/本地文件名.html)
这里还设置了js与android的交互webView.addJavascriptInterface(new JsInterface(), "control");这里是为js在页面可以调用名称为control的代码,也是自定义的JsInterface类的代码。
html的具体代码我也写出来,大家有兴趣可以看看。
<!DOCTYPE html>
<html>
<head><title></title><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="this is my page"><meta http-equiv="content-type" content="text/html; charset=UTF-8"><script type="text/javascript"> function showToast(toast) { javascript:control.showToast(toast);}function log(msg) {consolse.log(msg);}</script> <style type="text/css">input{width: 100px;height: 100px;margin: 20px;}</style></head><body><input type="button" value="toast" οnclick="showToast('hello world!')">
</body>
</html>
这里当点击按钮时,会调用JsInterface的showToast(String toast)的代码。
这样效果就完成了,大家可能看起来比较乱,因为内容太多,自己也实在不知道怎么讲,有兴趣的可以到网上查找资料。
android webView的使用就讲完了。
就这么简单。
android webView的使用相关推荐
- Android WebView访问SSL证书网页(onReceivedSslError)
Android WebView访问https SSL证书网页,如淘宝,需要在onReceivedSslError添加SSL支持 webview.setWebViewClient(new WebView ...
- android webview java_Android Webview中调用本地java方法
在网页调用本地的分享SDK class JsObject { @JavascriptInterface public String toString() { return "injected ...
- android的webView的教程,Android WebView 应用界面开发教程
WebView组件本身就是一个浏览器实现,Android5.0增强的WebView基于Chromium M37,直接支持WebRTC.WebAudio.WebGL.开发者可以直接在WebView中使用 ...
- Android WebView 支持H5图片上传input type=file
2019独角兽企业重金招聘Python工程师标准>>> Android WebView 缓存处理 Android WebView 支持H5图片上传<input type=&qu ...
- Chrome 调试 Android WebView 网页
手机开启开发者模式,并且Usb 连接到电脑 Android webView 开启调试模式 mWebView.setWebContentsDebuggingEnabled(true); Chrome 浏 ...
- Android webview 写入cookie的解决方法以及一些属性设置
Android webview 写入cookie的解决方法以及一些属性设置 参考文章: (1)Android webview 写入cookie的解决方法以及一些属性设置 (2)https://www. ...
- android url webview,android - webview获取到当前页面的url
android - webview获取到当前页面的url 2017-10-23 08:54 访问量: 2958 分类: 技术 使用 webview.getUrl() 即可. 可以完美返回 a.com ...
- Android Webview H5 秒开方案实现
本文首发于微信公众号「玉刚说」 原文链接:Android Webview H5 秒开方案实现 前言 现在许多app都嵌入了H5页面, 然而WebView加载速度慢这个问题却一直影响着用户的体验, 所以 ...
- Android WebView 性能优化
原文出处:http://motalks.cn/2016/09/11/Android-WebView-JavaScript-3/ WebView相关阅读 Android WebView 和 javaSc ...
- Android WebView 和 javaScript的互相调用(三)
原文出处:http://motalks.cn/2016/08/27/Android-WebView-JavaScript-2/ WebView相关阅读 Android WebView 和 javaSc ...
最新文章
- Unity 游戏开发技巧集锦之使用cookie类型的纹理模拟云层的移动
- 使用python hashlib模块给明文字符串加密,以及如何撞库破解密码
- [JDBC] Kettle on MaxCompute 使用指南
- PyQt特殊对话框介绍
- PHP中cookie和session
- 从服务器检索时出错dfdferh01_基于客户端-服务器的网络编程模型
- python僵尸进程和孤儿进程_进程3.0——进程状态与僵尸进程、孤儿进程
- TinkPHP内核仿每推推51领啦试客系统源码
- 龙贝格算法(Matlab实现)
- 【笔记】运筹(下)——Rita_Aloha
- 《WEB全栈工程师的自我修养》--索引笔记
- 探究京东商城的数据建模
- 线性代数(一)—— 行列式
- [题解]LuoGu4315:月下“毛景树”
- 【考研英语】作文套话(自用)
- 飞桨火力全开,重磅上线3D模型:PointNet++、PointRCNN!
- NavMesh基础使用
- 【HDU】5197 DZY Loves Orzing 【FFT启发式合并】
- 四、无限法则roe-滑雪进阶入门小贴士
- 数据传送类指令(PUSH,POP,LEA)