热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

安卓开发之WebView的使用

文章预览前言1.什么是WebView?2.相关方法一、WebView简单使用1.1、环境准备1.2、MyWebChromClient.java1.3、MyWebVie


文章预览

  • 前言
    • 1.什么是WebView?
    • 2.相关方法
  • 一、WebView简单使用
    • 1.1、环境准备
    • 1.2、MyWebChromClient.java
    • 1.3、MyWebViewClient
    • 1.4、MainActivity.java
    • 1.5、activity_main.xml
  • 二、效果预览


前言


1.什么是WebView?

Android内置webkit内核的高性能浏览器,而WebView则是在这个基础上进行封装后的一个 控件,WebView直译网页视图,我们可以简单的看作一个可以嵌套到界面上的一个浏览器控件!


2.相关方法

参考文章
https://www.runoob.com/w3cnote/android-tutorial-webview.html


一、WebView简单使用


1.1、环境准备

加入网络访问权限

<uses-permission android:name&#61;"android.permission.INTERNET"/>

创建一个assets文件夹用来放html网页或者一些不用编译的文件
在这里插入图片描述
在这里插入图片描述

放入一个html文件&#xff0c;如图所示

在这里插入图片描述


1.2、MyWebChromClient.java

继承WebChromeClient

package cn.zzuli.mywebview;import android.app.Activity;
import android.content.Context;
import android.webkit.WebChromeClient;
import android.webkit.WebView;public class MyWebChromClient extends WebChromeClient {private Activity mActivity;public MyWebChromClient(Activity mActivity) {this.mActivity &#61; mActivity;}/*** 设置网页加载的进度条* &#64;param view* &#64;param newProgress*/&#64;Overridepublic void onProgressChanged(WebView view, int newProgress) {super.onProgressChanged(view, newProgress);}/*** 设置网页标题* &#64;param view* &#64;param title*/&#64;Overridepublic void onReceivedTitle(WebView view, String title) {super.onReceivedTitle(view, title);
// 必须在Activity的页面中设置mActivity.setTitle(title);}
}

1.3、MyWebViewClient

继承WebViewClient

package cn.zzuli.mywebview;import android.graphics.Bitmap;
import android.util.Log;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;public class MyWebViewClient extends WebViewClient {private WebView mwebView;public MyWebViewClient(WebView mwebView) {this.mwebView &#61; mwebView;}/*** 设置不用本机的浏览器进行加载* &#64;param view* &#64;param request* &#64;return*/&#64;Overridepublic boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {view.loadUrl(request.getUrl().toString());return true;}/*** 点击的页面开始* &#64;param view* &#64;param url* &#64;param favicon*/&#64;Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {super.onPageStarted(view, url, favicon);Log.d("webView","onPageStarted...");}/*** 点击的页面加载完成* &#64;param view* &#64;param url*/&#64;Overridepublic void onPageFinished(WebView view, String url) {super.onPageFinished(view, url);Log.d("webView","onPageFinished...");//使用JS代码
// mwebView.loadUrl("Javascript:alert(&#39;韭菜盖饭!&#39;)");mwebView.evaluateJavascript("Javascript:alert(&#39;韭菜盖饭!&#39;)",null);}
}

1.4、MainActivity.java

package cn.zzuli.mywebview;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;public class MainActivity extends AppCompatActivity {private WebView mwebView;&#64;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mwebView &#61; findViewById(R.id.wv);//加载本地网页mwebView.loadUrl("file:///android_asset/test.html");//加载网络页面mwebView.getSettings().setJavascriptEnabled(true);//设置自定义的MyWebViewClientmwebView.setWebViewClient(new MyWebViewClient(mwebView));//设置自定义的MyWebChromClientmwebView.setWebChromeClient(new MyWebChromClient(this));//本地写一些JS代码&#xff0c;网页端进行调用
// mwebView.addJavascriptInterface();mwebView.loadUrl("https://m.baidu.com/"); //地址为百度移动站点}/*** 解决退出网页却直接退出Activity的问题* &#64;param keyCode* &#64;param event* &#64;return*/&#64;Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode &#61;&#61; KeyEvent.KEYCODE_BACK && mwebView.canGoBack()){mwebView.goBack();return true;}return super.onKeyDown(keyCode, event);}
}

1.5、activity_main.xml

布局文件就包含了一个WebView组件


<LinearLayout xmlns:android&#61;"http://schemas.android.com/apk/res/android"xmlns:app&#61;"http://schemas.android.com/apk/res-auto"xmlns:tools&#61;"http://schemas.android.com/tools"android:layout_width&#61;"match_parent"android:layout_height&#61;"match_parent"tools:context&#61;".MainActivity"><WebViewandroid:id&#61;"&#64;&#43;id/wv"android:layout_width&#61;"match_parent"android:layout_height&#61;"match_parent"/>LinearLayout>

二、效果预览

在这里插入图片描述


推荐阅读
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 本文介绍了在多平台下进行条件编译的必要性,以及具体的实现方法。通过示例代码展示了如何使用条件编译来实现不同平台的功能。最后总结了只要接口相同,不同平台下的编译运行结果也会相同。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • (三)多表代码生成的实现方法
    本文介绍了一种实现多表代码生成的方法,使用了java代码和org.jeecg框架中的相关类和接口。通过设置主表配置,可以生成父子表的数据模型。 ... [详细]
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • 数组的排序:数组本身有Arrays类中的sort()方法,这里写几种常见的排序方法。(1)冒泡排序法publicstaticvoidmain(String[]args ... [详细]
  • 面向对象之3:封装的总结及实现方法
    本文总结了面向对象中封装的概念和好处,以及在Java中如何实现封装。封装是将过程和数据用一个外壳隐藏起来,只能通过提供的接口进行访问。适当的封装可以提高程序的理解性和维护性,增强程序的安全性。在Java中,封装可以通过将属性私有化并使用权限修饰符来实现,同时可以通过方法来访问属性并加入限制条件。 ... [详细]
  • CSS|网格-行-结束属性原文:https://www.gee ... [详细]
author-avatar
猥琐叔装嫩小孩
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有