webview加载html跳转,WebView加载网页(二)
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加载网页(二)相关推荐
- Flutter:加载本地Html、WebView与JS交互
本次教程使用的是Flutter官方提供的WebView组件webview_flutter 2.3.1,flutter_android 2.2.1 一. WebView介绍 以下为Flutter Web ...
- android资源加载失败,解决Android WebView拦截url,视频播放加载失败的问题
解决Android WebView拦截url,视频播放加载失败的问题 发布时间:2020-10-08 05:19:44 来源:脚本之家 阅读:86 作者:灵均子孟 需求:Android调用webVie ...
- Android开发之WebView加载html数据去除Webview滚动条的方法
老套路看图: 这是通过webview加载HTML源码显示的网页:加载方法如下: webview.loadDataWithBaseURL(null, htmlData, "text/html& ...
- android webView的缓存机制和资源预加载
android 原生使用WebView嵌入H5页面 Hybrid开发 一.性能问题 android webview 里H5加载速度慢 网络流量大 1.H5页面加载速度慢 渲染速度慢 js解析效率 js ...
- Hive 加载数据跳过表头
Hive 加载数据跳过表头 问题 问题描述 hive加载数据时把表头当作数据加载到表中 执行命令 load data inpath "hdfs://node4.co:9000/hotelsp ...
- 小程序 公众号/h5相互跳转-webview
小程序与h5的跳转 前提小程序管理后台配置域名白名单,并且h5页面是嵌在小程序里面(相互跳的前提条件) 在业务域名中设置好访问的h5地址 微信官方web-view 介绍地址 https://devel ...
- flutter html 加载_Flutter开发:项目加载本地html文件的步骤
Flutter开发会遇到各种各样的技术,而且flutter开发带来了新的"技术革命",解放了iOS单一开发和Android单一开发所带来的巨大成本问题,一套flutter代码可以适 ...
- ios wkweb设置图片_ios·WKWebView\UIWebView加载HTMLString,实现图片懒加载
背景: 项目中开发商品类型数据,数据可变性较大,所以商品详情数据存在文案和图片富文本显示,后台返回了html格式的数据供前端展示. 如果用webView直接显示的话,需要等html内容完全展示才能获取 ...
- 按需加载图片(图片懒加载)
前言 按需要加载图片,这是一个非常实用的功能,不仅可以提高网站的性能,还可以为你节省流量.对于用虚拟主机的朋友来说,如果你的网站是一个图片网站或者图片比较多的网站,那么图片懒加载功能真不能少. 原理 ...
最新文章
- Kubernetes — 安装 Dashboard UI
- 分享web前端七款HTML5 Loading动画特效集锦
- 使用Speedment和Spring创建REST API
- 2.lvm动态逻辑卷
- 搜索引擎 —海量数据搜索
- 国家级计算机实验教学师范中心,国家级实验教学示范中心
- 儒豹公布09年7月手机搜索热门关键词排行榜
- 使用axure rp8 制作一个iphonex手机框架
- 【Mockplus教程】安装Mockplus
- 从微软官网下载win10镜像.iso文件
- matlab教程黄金分割,Matlab程序设计在黄金分割法教学中的应用
- 微擎弹出确认授权获取用户头像
- 微信支付v3版本npm包
- Eclipse中使用search功能,搜索内容无法多窗口打开
- 利用棋盘格图案完成相机标定
- TX Text Control文字处理教程(4)标记文本域
- SQLServer2008 快捷键集合
- 无线常见问题排查手册
- 用Python机器人监听微信群聊 !
- 8021什么意思_ox004a8021 指令引用的 0x01ac1100内存 是什么意思?