WebView加载网页(二)

一、实现目标

1、实现一个页面activity_main.xml,该页面上面有一个TextView和两个WebView,一个WebView显示百度首页,另一个WebView显示另外一个网站的首页。

二、步骤

1、新建项目

使用Android Studio新建一个项目

2、制作页面activity_main.xml

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

tools:context=".MainActivity">

android:layout_width="wrap_content"

android:layout_height="0dp"

android:layout_weight="3"

android:text="Hello World!"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintLeft_toLeftOf="parent"

app:layout_constraintRight_toRightOf="parent"

app:layout_constraintTop_toTopOf="parent"

android:textSize="30sp"/>

android:layout_width="match_parent"

android:background="#030303"

/>

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="5"

android:id="@+id/webview1"

>

android:layout_width="match_parent"

android:background="#030303"

/>

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="5"

android:id="@+id/webview2"

>

效果如下:

3、修改MainActivity.java

package cn.qiu.test03;

import android.app.Activity;

import android.app.ProgressDialog;

import android.content.Intent;

import android.net.Uri;

import android.os.Bundle;

import android.webkit.WebChromeClient;

import android.webkit.WebView;

import android.webkit.WebViewClient;

public class MainActivity extends Activity {

private WebView webView1;

private WebView webView2;

private ProgressDialog pDialog;

private long exitTime = 0;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

init_webview1();

init_webview2();

}

private void init_webview1(){

webView1 = (WebView) findViewById(R.id.webview1);

webView1.setWebViewClient(new WebViewClient() {

//设置在webView点击打开的新网页在当前界面显示,而不跳转到新的浏览器中

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

return true;

}

});

webView1.getSettings().setJavaScriptEnabled(true); //设置WebView属性,运行执行js脚本

webView1.loadUrl("https://www.baidu.com/"); //调用loadUrl方法为WebView加入链接

webView1.setWebViewClient(new WebViewClient(){ //

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

try{

if(url.startsWith("baiduboxapp://")||url.startsWith("baiduboxlite://")){

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));

startActivity(intent);

return true;

}

}catch (Exception e){

return false;

}

webView1.loadUrl(url);

return true;

}

});

//setContentView(webView); //调用Activity提供的setContentView将webView显示出来

//页面加载的进度

webView1.setWebChromeClient(new WebChromeClient(){

@Override

public void onProgressChanged(WebView view, int newProgress) {

//newProgress为1~100之间的整数

if(newProgress==100){

//网页加载完毕,关闭ProgressDialog

closeDialog();

}else{

//网页正在加载,打开ProgressDialog

openDialog(newProgress);

}

}

private void closeDialog() {

//进度条不为空并且显示有进度条时

if(pDialog!=null&&pDialog.isShowing()){

pDialog.dismiss();//进度条取消显示

pDialog=null;//并且进度条设置为空

}

}

private void openDialog(int newProgress) {

//进度条为空时

if (pDialog==null){

pDialog=new ProgressDialog(MainActivity.this);

pDialog.setTitle("正在加载...");

//进度条的样式

pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

pDialog.setProgress(newProgress);//显示进度条的进度

pDialog.show();//显示进度条

}else {

pDialog.setProgress(newProgress);//显示最新(刷新)的进度

}

}

});

}

private void init_webview2(){

webView2 = (WebView) findViewById(R.id.webview2);

webView2.setWebViewClient(new WebViewClient() {

//设置在webView点击打开的新网页在当前界面显示,而不跳转到新的浏览器中

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

return true;

}

});

webView2.getSettings().setJavaScriptEnabled(true); //设置WebView属性,运行执行js脚本

webView2.loadUrl("https://blog.csdn.net/"); //调用loadUrl方法为WebView加入链接

webView2.setWebViewClient(new WebViewClient(){ //

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

try{

if(url.startsWith("baiduboxapp://")||url.startsWith("baiduboxlite://")){

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));

startActivity(intent);

return true;

}

}catch (Exception e){

return false;

}

webView2.loadUrl(url);

return true;

}

});

//setContentView(webView); //调用Activity提供的setContentView将webView显示出来

//页面加载的进度

webView2.setWebChromeClient(new WebChromeClient(){

@Override

public void onProgressChanged(WebView view, int newProgress) {

//newProgress为1~100之间的整数

if(newProgress==100){

//网页加载完毕,关闭ProgressDialog

closeDialog();

}else{

//网页正在加载,打开ProgressDialog

openDialog(newProgress);

}

}

private void closeDialog() {

//进度条不为空并且显示有进度条时

if(pDialog!=null&&pDialog.isShowing()){

pDialog.dismiss();//进度条取消显示

pDialog=null;//并且进度条设置为空

}

}

private void openDialog(int newProgress) {

//进度条为空时

if (pDialog==null){

pDialog=new ProgressDialog(MainActivity.this);

pDialog.setTitle("正在加载...");

//进度条的样式

pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

pDialog.setProgress(newProgress);//显示进度条的进度

pDialog.show();//显示进度条

}else {

pDialog.setProgress(newProgress);//显示最新(刷新)的进度

}

}

});

}

}

4、在AndroidManfest.xml中加入上网权限

三、测试

运行程序,显示效果如下:

webview加载html跳转,WebView加载网页(二)相关推荐

  1. Flutter:加载本地Html、WebView与JS交互

    本次教程使用的是Flutter官方提供的WebView组件webview_flutter 2.3.1,flutter_android 2.2.1 一. WebView介绍 以下为Flutter Web ...

  2. android资源加载失败,解决Android WebView拦截url,视频播放加载失败的问题

    解决Android WebView拦截url,视频播放加载失败的问题 发布时间:2020-10-08 05:19:44 来源:脚本之家 阅读:86 作者:灵均子孟 需求:Android调用webVie ...

  3. Android开发之WebView加载html数据去除Webview滚动条的方法

    老套路看图: 这是通过webview加载HTML源码显示的网页:加载方法如下: webview.loadDataWithBaseURL(null, htmlData, "text/html& ...

  4. android webView的缓存机制和资源预加载

    android 原生使用WebView嵌入H5页面 Hybrid开发 一.性能问题 android webview 里H5加载速度慢 网络流量大 1.H5页面加载速度慢 渲染速度慢 js解析效率 js ...

  5. Hive 加载数据跳过表头

    Hive 加载数据跳过表头 问题 问题描述 hive加载数据时把表头当作数据加载到表中 执行命令 load data inpath "hdfs://node4.co:9000/hotelsp ...

  6. 小程序 公众号/h5相互跳转-webview

    小程序与h5的跳转 前提小程序管理后台配置域名白名单,并且h5页面是嵌在小程序里面(相互跳的前提条件) 在业务域名中设置好访问的h5地址 微信官方web-view 介绍地址 https://devel ...

  7. flutter html 加载_Flutter开发:项目加载本地html文件的步骤

    Flutter开发会遇到各种各样的技术,而且flutter开发带来了新的"技术革命",解放了iOS单一开发和Android单一开发所带来的巨大成本问题,一套flutter代码可以适 ...

  8. ios wkweb设置图片_ios·WKWebView\UIWebView加载HTMLString,实现图片懒加载

    背景: 项目中开发商品类型数据,数据可变性较大,所以商品详情数据存在文案和图片富文本显示,后台返回了html格式的数据供前端展示. 如果用webView直接显示的话,需要等html内容完全展示才能获取 ...

  9. 按需加载图片(图片懒加载)

    前言 按需要加载图片,这是一个非常实用的功能,不仅可以提高网站的性能,还可以为你节省流量.对于用虚拟主机的朋友来说,如果你的网站是一个图片网站或者图片比较多的网站,那么图片懒加载功能真不能少. 原理 ...

最新文章

  1. Kubernetes — 安装 Dashboard UI
  2. 分享web前端七款HTML5 Loading动画特效集锦
  3. 使用Speedment和Spring创建REST API
  4. 2.lvm动态逻辑卷
  5. 搜索引擎 —海量数据搜索
  6. 国家级计算机实验教学师范中心,国家级实验教学示范中心
  7. 儒豹公布09年7月手机搜索热门关键词排行榜
  8. 使用axure rp8 制作一个iphonex手机框架
  9. 【Mockplus教程】安装Mockplus
  10. 从微软官网下载win10镜像.iso文件
  11. matlab教程黄金分割,Matlab程序设计在黄金分割法教学中的应用
  12. 微擎弹出确认授权获取用户头像
  13. 微信支付v3版本npm包
  14. Eclipse中使用search功能,搜索内容无法多窗口打开
  15. 利用棋盘格图案完成相机标定
  16. TX Text Control文字处理教程(4)标记文本域
  17. SQLServer2008 快捷键集合
  18. 无线常见问题排查手册
  19. 用Python机器人监听微信群聊 !
  20. 8021什么意思_ox004a8021 指令引用的 0x01ac1100内存 是什么意思?

热门文章

  1. 程序员写代码崩溃,路过的暖心美团骑手:我帮你看看!
  2. 重磅!Spring Boot 2.5.0火热发布,还学得动吗?
  3. 妙用 Intellij IDEA 创建临时文件,Git 跟踪不到的那种
  4. 运用单例模式、建造者模式和策略模式实现异步加载Android联系人资料
  5. Navicat连接mysql数据库
  6. 如何制作PDF,以及给PDF添加书签 .
  7. vs release 调试 路径设置
  8. win10下编译和使用mnn 2021
  9. conv_general_dilated实现
  10. vs c# release调试