首先是布局R.layout.activity_main

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context="com.example.sportsii.webviewdemo.MainActivity">

    <LinearLayout
        android:id="@+id/webView_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <ProgressBar
            android:id="@+id/progressBar"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="match_parent"
            android:layout_height="3dp"
            android:progressDrawable="@drawable/progressbar_carch" />

        <WebView
            android:id="@+id/webView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"></WebView>
    </LinearLayout>

    <TextView
        android:id="@+id/error_tv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="网络连接错误"
        android:textSize="30dp"
        android:visibility="gone" />

</RelativeLayout>

然后是 ProgressBar样式

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="2.0dip" />

            <gradient
                android:angle="270.0"
                android:centerColor="#FFFFFF"
                android:centerY="2.0"
                android:endColor="#FFFFFF"
                android:startColor="#FFFFFF" />
        </shape>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="2.0dip" />

                <gradient
                    android:angle="270.0"
                    android:centerColor="#8bc34a"
                    android:centerY="2.0"
                    android:endColor="#8bc34a"
                    android:startColor="#8bc34a" />
            </shape>
        </clip>
    </item>

</layer-list>

最后是逻辑代码(如果加载失败会显示加载失败的界面)

package com.example.sportsii.webviewdemo;

import android.graphics.Bitmap;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {private LinearLayout webLLayout;
    private TextView errorTv;
    private WebView webView;
    private ProgressBar progressBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webView = (WebView) findViewById(R.id.webView);
        progressBar = (ProgressBar) findViewById(R.id.progressBar);
        webLLayout = (LinearLayout) findViewById(R.id.webView_layout);
        errorTv = (TextView) findViewById(R.id.error_tv);
        initViews();
    }private void initViews() {//支持javascript
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);// 支持通过JS打开新窗口
        // 设置可以支持缩放
        webView.getSettings().setSupportZoom(true);
        // 设置出现缩放工具
        webView.getSettings().setBuiltInZoomControls(true);
        //扩大比例的缩放
        webView.getSettings().setUseWideViewPort(true);
        webView.getSettings().setAllowFileAccess(true);
        webView.getSettings().setLoadsImagesAutomatically(true);// 支持自动加载图片
        //自适应屏幕
        webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
        webView.getSettings().setLoadWithOverviewMode(true);

        webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
        webView.setWebChromeClient(new WebChromeClient() {@Override
            public void onProgressChanged(WebView view, int newProgress) {super.onProgressChanged(view, newProgress);
                progressBar.setProgress(newProgress);
            }});
        webView.setWebViewClient(new WebViewClient() {@Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {super.onPageStarted(view, url, favicon);
                progressBar.setVisibility(View.VISIBLE);
            }@Override
            public void onPageFinished(WebView view, String url) {super.onPageFinished(view, url);
                progressBar.setVisibility(View.GONE);
            }//请求失败时显示失败的界面
            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {super.onReceivedError(view, errorCode, description, failingUrl);
                webLLayout.setVisibility(View.GONE);
                errorTv.setVisibility(View.VISIBLE);
            }});
        webView.loadUrl(" http://blog.csdn.net/mchenys/article/details/49930739");
    }// 改写手机物理按键--返回的逻辑
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {if (webView.canGoBack()) {webView.goBack();// 返回上一页面
                return true;
            } else {finish();
                // System.exit(0);// 退出程序
            }}return super.onKeyDown(keyCode, event);
    }
}

Android WebView加载网页进度监听相关推荐

  1. Android WebView加载完成的监听

    在项目里有时会需要监听WebView加载完成的状态,可能有人会使用WebViewClient里onPageFinished这个方法来监听,可是这个官方的方法到现在还是不稳定,有些能监听到,有些则不能. ...

  2. android WebView加载网页白屏问题优化处理

    android WebView加载网页白屏问题优化处理 问题描述: 使用webview加载Web界面时,会出现界面白屏的情况.http下通常问题不大,通常https白屏的可能性很大,而且通常没有任何报 ...

  3. Android WebView加载网页,图片等元素宽度大小不兼容手机屏幕的宽度

    无论是Android手机还是iOS手机,使用WebView加载一些没有专门为手机屏幕做适配的网页的时候,就会出现网页中的图片等标签元素的宽度大小和手机屏幕的宽度不一致的情况,如下图 之所以会出现上面的 ...

  4. WebView加载Html片段监听滑动到底部

    需求:管理端有个富文本可以添加一个阅读须知,通过接口将富文本生成的Html返回给Android端,要求展示正确展示富文本内容,并且如果内容较多时,用户需要看完所有内容(滑动到底部)才能确认进入下一步. ...

  5. android webview加载网页,文字listview和image混合listview的实现

    android和ios内置浏览器支持html5,还支持CSS3和js 下面的一个小例子,我来实现android加载html页面.还有两个列表,回顾一下listview的功能.文章内容较浅,没有特别高的 ...

  6. Android WebView 加载网页只显示空白页不显示网页

    Android 在使用WebView控件将网页嵌入应用的时候有时会遇到页面显示不出来或者显示为空白页的情况 我在项目中也遇到了这个问题 , 尝试了很多方法都没有解决问题 ,最终找到了解决方法: Web ...

  7. android动态设置错误页面,Android中替换WebView加载网页失败时的页面

    我们用webView去请求一个网页链接的时候,如果请求网页失败或无网络的情况下,它会返回给我们这样一个页面,如下图所示: 上面这个页面就是系统自带的页面,你觉得是不是很丑?反正小编本人觉得非常丑,很难 ...

  8. Android WebView 加载https网页白屏,空白解决方案

    最近在做一个H5相关的需求,使用WebView加载第三方提供的https网页时显示白屏.但是调试打开Baidu和B站的https网址时就能正常打开.被这个问题困扰了半天. 合作方说是android手机 ...

  9. webview加载html跳转,WebView加载网页(二)

    WebView加载网页(二) 一.实现目标 1.实现一个页面activity_main.xml,该页面上面有一个TextView和两个WebView,一个WebView显示百度首页,另一个WebVie ...

  10. android 双 webview,Android webview加载页面

    释放双眼,带上耳机,听听看~! Android webview加载页面 private WebView webView; public void init() { webView = (WebView ...

最新文章

  1. cisco PIX防火墙的配置及注解完全手册
  2. java中的多线程(转自http://www.cnblogs.com/rollenholt/archive/2011/08/28/2156357.html)
  3. 用Mysql创建设备管理信息系统数据库(图解)
  4. mysql的limit和or_面试官:谈谈MySQL的limit用法、逻辑分页和物理分页
  5. 手游引擎Unity和Cocos各有什么优劣?
  6. 从大学生到职场人,一段深刻的思维认知升级补丁
  7. 使用Maven编译Tomcat源码
  8. flash中的渐变滤镜GradientGlowFilter
  9. php状态,PHP 状态模式 - 304158的个人空间 - OSCHINA - 中文开源技术交流社区
  10. Android 7.0系统启动流程分析
  11. Web服务请求异步化介绍(概念篇)
  12. 学校计算机课怎取消红蜘蛛,谁知道怎么退出或卸载“红蜘蛛教学系统” 各位高手帮帮忙啊。。。(我们老师一讲就是一节课)...
  13. 【转】PLC编程软件: KW multiprog 和 codesys
  14. 计算机excel还原,Excel文件恢复软件(Magic Excel Recovery)
  15. 豆瓣八卦小组html失败,原来豆瓣有这么多稀奇古怪的小组?
  16. CityEngine + Python自动化建模原理【系列文章之三】
  17. 徐州php溪谷_ThinkPHP溪谷H5游戏平台系统V3.0完整版源码
  18. 阿里巴巴获得商品详情 API 返回值说明
  19. iTunes Connect突然登录不了的原因
  20. 【ie兼容】判断ie版本跳转到指定页面下载浏览器

热门文章

  1. 在线App开发平台——应用之星傻瓜式开发平台
  2. 牛客输入输出(依图科技)
  3. Adobe又逆天!不用机器学习,用13.5M软件把《长安十二时辰》变成水墨动画
  4. 实验二 使用UML进行对ATM系统建模
  5. 【架构】1366- 如何画出一张优秀的架构图
  6. 一个40岁程序员的经历
  7. windows10专业版安装应用商店方法
  8. tensorflow中gpu和cpu切换
  9. 达梦数据库基础篇--数据库管理工具
  10. linux drwxr-xr-x. 什么意思