图解WebView -- (1) WebView概述

article/2023/10/1 3:36:29

前言

目前各移动应用或多或少都内嵌了Web网页,在Android开发中,就不可避免的使用本系列的主角——WebView

一、WebView 是什么?

webapps示意图.png

  • WebView是Android 展示Web网页的控件,类似于应用提供一个内置的浏览器,在应用内实现和浏览器一致的网页展示效果(如上图所示)。
  • WebView基于开源的 webkit 引擎实现。
  • Android 4.4开始基于Chromium引擎实现(渲染性能提升)。

二、 WebView 有什么用?

  • 除了具备一般View的特性外,WebView还可完成url请求、Web页面加载、渲染、页面交互等。
  • 直接加载html文件(网络上或本地assets中)作为页面布局。
  • 提供了Android应用和JavaScript通信交互的通道(实现混合开发的基础)。

三、WebView的基本使用

3.1 应用权限配置

  • 访问网络数据,需要在AndroidManifest添加网络权限。
 <uses-permission android:name="android.permission.INTERNET" />

3.2 在布局文件中添加WebView控件

   <WebViewandroid:id="@+id/webview"android:layout_width="match_parent"android:layout_height="match_parent" />

3.3 WebView网页加载

  • 以下例子为打开百度页面。
  • 由于网页中使用了Javascript ,所以需要设置支持Javascript
public final class Demo1Activity extends AppCompatActivity {private ActivityDemo1Binding binding;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);binding = ActivityDemo1Binding.inflate(getLayoutInflater());setContentView(binding.getRoot());//获取WebView设置对象WebSettings settings = binding.webview.getSettings();//设置支持JavaScriptsettings.setJavaScriptEnabled(true);binding.webview.loadUrl("https://www.baidu.com");}
}
  • 使用了ViewBinding,需要在build.gradle中加上以下配置
  viewBinding {enabled = true}

四、 WebView核心知识体系

整个WebView应用开发核心知识体系,主要包含以下几大块:
WebView核心体系.png

4.1 WebView提供的API

WebView 作为核心控件,其自身功能十分强大,提供了许多API,供开发调用。

4.2 WebSettings

  • WebSettings是专门 对WebView控件配置和管理的类。

4.3 WebViewClient

WebViewClient辅助WebView控件处理各种通知与请求事件的一个类

4.4 WebChromeClient

WebChromeClient辅助WebView处理Javascript的对话框、网站图标、网站title、加载进度等的类

4.5 Android与JS通信交互

  • 实现混合开发的基础,Web网页通过JS调用Android原生接口实现混合开发业务。

参考资料

  • WebView(网页视图)基本用法
  • Carson带你学Android:最全面、易懂的Webview使用教程
  • WebView Android 官方开发者指南


http://www.ngui.cc/article/show-1007642.html

相关文章

【Mongoose笔记】SOCKS5 服务器

【Mongoose笔记】socks5 服务器 简介 Mongoose 笔记系列用于记录学习 Mongoose 的一些内容。 Mongoose 是一个 C/C 的网络库。它为 TCP、UDP、HTTP、WebSocket、MQTT 实现了事件驱动的、非阻塞的 API。 项目地址&#xff1a; https://github.com/cesanta/mongoose学习 下…

重启Android后SystemProperties属性变化

重启Android后SystemProperties属性变化1、SystemProperties属性加载2、PropertySet条件限制3、SystemProperties属性变化android12-release1、SystemProperties属性加载 查看 SystemProperties属性加载 属性映射区域LoadPath("/dev/__properties__/property_info")…

CentOs7 + Stable Diffusion + Novel AI实现AI绘画

前提条件 GPU服务器含有NVIDIA显卡安装Git环境&#xff08;版本 > 1.8.5&#xff09; 查看版本&#xff1a;git version 升级git&#xff1a;yum install -y https://repo.ius.io/ius-release-el7.rpm && yum install -y epel-release && yum erase -y git…

SpringCloud:SpringAMQP介绍

Spring AMQP是基于RabbitMQ封装的一套模板&#xff0c;并且还利用SpringBoot对其实现了自动装配&#xff0c;使用起来非常方便。Spring AMQP官方地址 Spring AMQP提供了三个功能&#xff1a; 自动声明队列、交换机及其绑定关系基于注解的监听器模式&#xff0c;异步接收消息封…

【致敬未来的攻城狮计划】连续打卡第4天+物联网操作系统概述

开启攻城狮的成长之旅&#xff01;这是我参与的由 CSDN博客专家 架构师李肯&#xff08;http://yyds.recan-li.cn&#xff09;和 瑞萨MCU &#xff08;https://www.renesas.cn/cn/zh&#xff09; 联合发起的「 致敬未来的攻城狮计划 」的第 4 天&#xff0c;点击查看活动计划详…

hastcat

hashcat 下载地址: https://hashcat.net/hashcat/ 案例 Usage: hashcat [options]... hash|hashfile|hccapxfile [dictionary|mask|directory]...https://xz.aliyun.com/t/4008破解linux shadow /etc/shadow中密码格式: $id$salt$encrypted如:$1$2eWq10AC$NaQqalCk3 1表…

ssm+vue在线课程培训系统java

在线培训系统的需求和管理上的不断提升&#xff0c;在线培训系统的潜力将无限扩大&#xff0c;在线培训系统在业界被广泛关注&#xff0c;本网站及对此进行总体分析&#xff0c;将在线培训系统信息管理的发展提供学校的管理帮助更大。 根据现有的模块&#xff0c;除管理员对系统…

docker安装Redis高可用(一主二从三哨兵)

本次教程使用docker swarm安装 准备三台机器 hostIP用途node1192.168.31.130redis-master01&#xff0c;redis哨兵节点01node2192.168.31.131redis-slave01, redis哨兵节点02node3192.168.31.132redis-slave02 redis哨兵节点02 注意事项&#xff1a; 1&#xff1a;需要保证三…

(数字图像处理MATLAB+Python)第二章数字图像处理基础-第二节:色度学基础与颜色模型

文章目录一&#xff1a;颜色匹配二&#xff1a;CIE 1931-RGB系统三&#xff1a;CIE 1931标准色度系统四&#xff1a;CIE 1976Lab均匀颜色空间五&#xff1a;孟塞尔表色系统&#xff08;1&#xff09;孟塞尔明度(Value&#xff0c;记为V)&#xff08;2&#xff09;孟塞尔彩度(Ch…

Linq使用where sql in (...)

List<int?> 机构编号数组 new List<int?>();var begin new DateTime(year, 1, 1);var end begin.AddYears(1);IQueryable<DtoReport健康体检表> Q_健康体检表 es.jktjEntitys.Where(m > m.体检日期 > begin && m.体检日期 < end).Whe…