WebView加载页面的两种方式

一、加载网络页面

  加载网络页面,是最简单的一种方式,只需要传入http的URL就可以,实现WebView加载网络页面

代码如下图:

二、加载本地页面

  1、加载assets目录下的HTML页面:

加载assets目录的页面,大多数可以用来做页面数据的存储打包,这样可以访问 离线文件,不用去进行网络请求,可以减少用户数据流量的使用

示例代码如下:

//加载assets目录文件
webView.loadUrl("file:///android_asset/staticHtml.html");

在这里面,解释一下引号里面每个字段的意思和作用:

file字段,表示读取本地文件,不读取网络文件。

android_asset表示读取当前应用的assets目录下的文件

staticHtml.html表示assets目录下的HTML页面

  2、加载缓存到本地的页面

加载缓存到本地的页面,这个主要可以用来做页面的离线缓存

例如将html文件存储到本地文件目录下

    //文件存储的本地文件夹路径
File filesDir = getFilesDir().getAbsoluteFile();
//本地存储的文件
File destFile = new File(filesDir, "staticHtmlcopy.html");
//将assets路径下的文件copy到filesDir路径下,注:此处也可以通过网络访问,对页面进行存储
InputStream is = null;
try {
is = getAssets().open("staticHtml.html");
if (destFile.exists()) {
destFile.delete();
}
FileOutputStream out = new FileOutputStream(destFile);
try {
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = is.read(buffer)) >= 0) {
out.write(buffer, 0, bytesRead);
}
} finally {
out.flush();
try {
out.getFD().sync();
} catch (IOException e) {
}
out.close();
} } catch (IOException e) {
e.printStackTrace();
}
//拼接生成WebView使用的url地址
String url="file://"+destFile.getAbsolutePath();
webView.loadUrl(url);

注:一些网络上直接抓取的页面里面一些js可能存在跨域,或者相对路径的情况,所以最好自己先写一些简单的页面做测试。

WebView加载页面的两种方式——网络页面和本地页面的更多相关文章

  1. [Android] Android ViewPager 中加载 Fragment的两种方式 方式(一)

    Android ViewPager 中加载 Fragmenet的两种方式 一.当fragment里面的内容较少时,直接 使用fragment xml布局文件填充 文件总数 布局文件:view_one. ...

  2. [Android] Android ViewPager 中加载 Fragment的两种方式 方式(二)

    接上文: https://www.cnblogs.com/wukong1688/p/10693338.html Android ViewPager 中加载 Fragmenet的两种方式 方式(一) 二 ...

  3. iOS 加载Image的两种方式

    Apple官方文档对于加载image提供了两个方法 + (nullable UIImage *)imageNamed:(NSString *)name; + (nullable UIImage *)i ...

  4. 前端实现图片懒加载(lazyload)的两种方式

    在实际的项目开发中,我们通常会遇见这样的场景:一个页面有很多图片,而首屏出现的图片大概就一两张,那么我们还要一次性把所有图片都加载出来吗?显然这是愚蠢的,不仅影响页面渲染速度,还浪费带宽.这也就是们通 ...

  5. easyui里面的加载tree的两种方式

    第一种: 使用EasyUI中Tree 符合EasyUI中Tree的Json格式,我们先看一下,格式是如何的 [{ "id":1, "text":"My ...

  6. easyui datagrid加载数据的两种方式

    1.加载本地数据 var obj = {"total":2,"rows":[{id:"1",name:"一"},{id: ...

  7. mybatis 加载配置文件的两种方式

    package com.atguigu.day03_mybaits.test; import java.io.IOException;import java.io.InputStream;import ...

  8. 网络笔记01-3 socket 实现百度页面的两种方式

    scoket 实现百度页面的两种方式: 1.利用系统自带    //1.创建URL NSURL *url=[NSURL URLWithString:@"http://m.baidu.com& ...

  9. JavaScript判断图片是否加载完成的三种方式

    JavaScript判断图片是否加载完成的三种方式 有时需要获取图片的尺寸,这需要在图片加载完成以后才可以.有三种方式实现,下面一一介绍. 一.load事件 1 2 3 4 5 6 7 8 9 10 ...

随机推荐

  1. Parallel.For 你可能忽视的一个非常实用的重载方法

    说起Parallel.For大家都不会陌生,很简单,不就是一个提供并行功能的for循环吗? 或许大家平时使用到的差不多就是其中最简单的那个重载方法,而真实情况 下Parallel.For里面有14个重 ...

  2. kvm基本原理

    KVM源代码分析1:基本工作原理 下了很大决心挖这个坑,虽然之前对kvm有些了解,但纸上得来终觉浅,只有深入到代码层面,才能摈弃皮毛,看到血肉,看到真相.作为挖坑的奠基石,准备写上几篇:kvm基本工作 ...

  3. Java实现非递归删除目录

    最近在学C#的文件系统, 发现C#的文件系统貌似比java的东西少一点, 居然连删除目录都直接做好封装了, 想到学java的时候还要自己写递归删除, 好像没写过非递归的,就在网上查了下, 关于非递归删 ...

  4. Zeppelin interperter 模式设置总结

    如有错漏,望请指正,不胜感激. 参考:[zeppelin官网]:https://zeppelin.apache.org/docs/latest/interpreter/spark.html#inter ...

  5. MySQL1236错误的恢复

    从库出现问题 mysql> show slave status\G; *************************** . row *************************** ...

  6. raise RuntimeError("autoconf error") RuntimeError: autoconf error

    pip 安装模块时遇到下错误,没有粘贴全,差不多都是这样.这个情况是 pip 安装模块 需要 gcc 及 python-devle 支持, ubuntu 是 python-dev ,使用Yum 安装即 ...

  7. sql-update语句多表级联更新

    在数据表更新时,可能会出现一种情况,就是更新的内容是来源于其他表的,这个时候,update语句中就加了from,下面为一个范例: update a set a.name=b.name,a.value= ...

  8. shiro使用教程

    一.shiro是什么 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码学和会话管理.不仅可以在Web项目中使用,在普通的项目中也是可以使用的 二.shiro可以做什 ...

  9. WPF之路三:视频的播放

    同图片一样,把视频资源复制到文件夹路径下,修改资源属性复制到输出目录"始终复制",生成操作改为“内容”, 把<MediaElement  Name="myVid&q ...

  10. Python之路-Linux命令基础(5)

    作业一:nginx服务 二进制安装nginx包 1.使用网络yum源 2.使用yum安装epel-release扩展源 [root@localhost html]# yum install epel- ...