昨天,自己用到了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的使用相关推荐

  1. Android WebView访问SSL证书网页(onReceivedSslError)

    Android WebView访问https SSL证书网页,如淘宝,需要在onReceivedSslError添加SSL支持 webview.setWebViewClient(new WebView ...

  2. android webview java_Android Webview中调用本地java方法

    在网页调用本地的分享SDK class JsObject { @JavascriptInterface public String toString() { return "injected ...

  3. android的webView的教程,Android WebView 应用界面开发教程

    WebView组件本身就是一个浏览器实现,Android5.0增强的WebView基于Chromium M37,直接支持WebRTC.WebAudio.WebGL.开发者可以直接在WebView中使用 ...

  4. Android WebView 支持H5图片上传input type=file

    2019独角兽企业重金招聘Python工程师标准>>> Android WebView 缓存处理 Android WebView 支持H5图片上传<input type=&qu ...

  5. Chrome 调试 Android WebView 网页

    手机开启开发者模式,并且Usb 连接到电脑 Android webView 开启调试模式 mWebView.setWebContentsDebuggingEnabled(true); Chrome 浏 ...

  6. Android webview 写入cookie的解决方法以及一些属性设置

    Android webview 写入cookie的解决方法以及一些属性设置 参考文章: (1)Android webview 写入cookie的解决方法以及一些属性设置 (2)https://www. ...

  7. android url webview,android - webview获取到当前页面的url

    android - webview获取到当前页面的url 2017-10-23 08:54 访问量: 2958 分类: 技术 使用 webview.getUrl() 即可. 可以完美返回  a.com ...

  8. Android Webview H5 秒开方案实现

    本文首发于微信公众号「玉刚说」 原文链接:Android Webview H5 秒开方案实现 前言 现在许多app都嵌入了H5页面, 然而WebView加载速度慢这个问题却一直影响着用户的体验, 所以 ...

  9. Android WebView 性能优化

    原文出处:http://motalks.cn/2016/09/11/Android-WebView-JavaScript-3/ WebView相关阅读 Android WebView 和 javaSc ...

  10. Android WebView 和 javaScript的互相调用(三)

    原文出处:http://motalks.cn/2016/08/27/Android-WebView-JavaScript-2/ WebView相关阅读 Android WebView 和 javaSc ...

最新文章

  1. Unity 游戏开发技巧集锦之使用cookie类型的纹理模拟云层的移动
  2. 使用python hashlib模块给明文字符串加密,以及如何撞库破解密码
  3. [JDBC] Kettle on MaxCompute 使用指南
  4. PyQt特殊对话框介绍
  5. PHP中cookie和session
  6. 从服务器检索时出错dfdferh01_基于客户端-服务器的网络编程模型
  7. python僵尸进程和孤儿进程_进程3.0——进程状态与僵尸进程、孤儿进程
  8. TinkPHP内核仿每推推51领啦试客系统源码
  9. 龙贝格算法(Matlab实现)
  10. 【笔记】运筹(下)——Rita_Aloha
  11. 《WEB全栈工程师的自我修养》--索引笔记
  12. 探究京东商城的数据建模
  13. 线性代数(一)—— 行列式
  14. [题解]LuoGu4315:月下“毛景树”
  15. 【考研英语】作文套话(自用)
  16. 飞桨火力全开,重磅上线3D模型:PointNet++、PointRCNN!
  17. NavMesh基础使用
  18. 【HDU】5197 DZY Loves Orzing 【FFT启发式合并】
  19. 四、无限法则roe-滑雪进阶入门小贴士
  20. 数据传送类指令(PUSH,POP,LEA)

热门文章

  1. 【python常用模块】os.path
  2. 今天学了瀑布流的js方法
  3. Microsoft Silverlight 4 脱机文档
  4. VBA自定义函数集锦[2]
  5. Android之用PopupWindow实现弹出listview形式菜单
  6. 4.1邮箱的全选,全不选,反选
  7. Python入门4_之字典的使用
  8. LeetCode 79 Word Search(单词查找)
  9. 图像滤镜艺术---微软自拍APP滤镜实现合集DEMO
  10. 给sublime设置格式化代码的快捷键