Android Webview添加网页加载进度条实例详解

针对“Android Webview添加网页加载进度条实例详解”,我们可以从以下几个方面进行讲解。

一、添加进度条布局

首先需要为Webview添加一个进度条布局,代码如下:

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

        <ProgressBar
            android:id="@+id/progressBar"
            style="@style/Widget.AppCompat.ProgressBar.Horizontal"
            android:layout_width="match_parent"
            android:layout_height="5dp"
            android:layout_gravity="center"
            android:layout_marginTop="-5dp"
            android:progressDrawable="@drawable/webview_progress_bar" />

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

    </LinearLayout>

在这个布局中,我们先定义了一个垂直方向的LinearLayout,然后在该LinearLayout内部放置了一个ProgressBar和一个WebView。ProgressBar的样式使用了系统提供的水平进度条样式,然后我们将它的高度设置为5dp,并且增加了一个 -5dp 的marginTop,是为了让ProgressBar与WebView之间留出一点空隙。

二、编写加载进度变化监听器

接下来我们需要编写一个进度变化监听器,负责监听页面的加载进度变化,并且更新ProgressBar的进度。代码如下:

public class MyWebviewClient extends WebViewClient {
    private ProgressBar mProgressBar;

    public MyWebviewClient(ProgressBar progressBar) {
        mProgressBar = progressBar;
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
        mProgressBar.setProgress(0);
        mProgressBar.setVisibility(View.VISIBLE);
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        mProgressBar.setProgress(100);
        mProgressBar.setVisibility(View.GONE);
    }

    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        super.onProgressChanged(view, newProgress);
        mProgressBar.setProgress(newProgress);
    }
}

这段代码中,我们继承了WebViewClient,并且在其内部重写了一些关键的回调方法。onPageStarted() 方法会在开始加载页面时被调用,我们在这里将ProgressBar的进度归零,并且显示出ProgressBar。同理,onPageFinished() 方法会在页面加载完成后被调用,我们在这里将ProgressBar的进度设置为100,并且将ProgressBar隐藏。

最后,我们需要重写onProgressChanged()方法,这个方法则会在页面加载过程中被多次调用,我们在这里将ProgressBar的进度设置为当前页面加载进度即可。

三、设置WebView的Client

接下来我们需要将自定义的WebviewClient设置给WebView。代码如下:

WebView mWebView = findViewById(R.id.webview);
ProgressBar mProgressBar = findViewById(R.id.progressBar);
mWebView.setWebViewClient(new MyWebviewClient(mProgressBar));

这段代码很简单,我们在SetWebViewClient()方法中指定了我们自定义的WebviewClient,并且将ProgressBar也传了进去,这样我们就可以在WebviewClient中方便地处理ProgressBar的变化了。

至此,Android Webview 添加网页加载进度条的攻略就大致完成了。我们通过添加布局和编写WebviewClient的方式,实现了一个简单的进度条来监控Webview的加载进度。同时我们还可以考虑一些进阶的功能,例如添加WebView的错误处理方法,或者实现一个自定义的ProgressBar等等。

其中,我们对网上的一些文章进行了参考,以下是两个示例链接:

《Android WebView添加加载进度条》
《Android WebView 的使用详解》

阅读剩余 48%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android Webview添加网页加载进度条实例详解 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • python异步存储数据详解

    Python异步存储数据详解 什么是异步存储 异步存储指在存储数据时采用异步方式,即通过在存储数据的同时执行其他代码的方式来提高效率。相比同步存储,在存储数据时,异步存储能够更好地处理高并发、大规模数据以及对响应时间有要求的场景。 Python异步存储的实现方式 在Python中,常用的异步存储方式有以下两种: 使用协程存储 协程是一种轻量级的线程,可以在不…

    other 2023年6月27日
    00
  • 我是这么安装使用.net5框架的

    下面是关于如何安装和使用.NET 5框架的完整攻略。 背景 .NET 5是一个跨平台的开源框,用于构高性能、可扩展的Web应用程序、桌面应用程序和动应用程序。本攻略将介绍如何在Windows、Linux和macOS上安装和使用.NET 5框架。 步骤 1. 下.NET 5 SDK 首先,我们需要下载.NET 5 SDK。可以以下链接下载: https://d…

    other 2023年5月9日
    00
  • 在eclipse中使用SVN的实现方法(图文教程)

    以下是详细讲解“在Eclipse中使用SVN的实现方法”的完整攻略。 准备工作 安装Eclipse和SVN插件:Eclipse官网下载Eclipse并安装,SVN插件可通过Eclipse的Marketplace进行下载安装。 申请SVN仓库账号:SVN仓库需要账号登录才能进行相关操作。 使用SVN 新建SVN仓库连接 打开Eclipse后,点击菜单栏的“Wi…

    other 2023年6月27日
    00
  • IIS7.5 配置自定义后缀的ASP文件 无法执行 总是提示下载的解决方法

    IIS7.5 配置自定义后缀的ASP文件无法执行的解决方法攻略 问题描述 在IIS7.5中配置了自定义后缀的ASP文件,但是无法执行,总是提示下载。下面是解决这个问题的完整攻略。 解决方法 步骤1:启用ASP扩展 首先,确保已经启用了ASP扩展。按照以下步骤进行操作: 打开IIS管理器。 在左侧导航栏中,展开服务器节点,然后展开“角色”节点,找到“Web服务…

    other 2023年8月5日
    00
  • vue.js学习之递归组件

    下面是关于vue.js学习递归组件的完整攻略。 什么是递归组件? 递归组件是指在模板内部使用组件本身。在 Vue.js 中,可以通过在组件定义中使用 “name” 选项来使组件可以递归地调用自己。 递归组件的应用场景 递归组件是解决树形结构问题的有效方式。常见的应用场景有无限级分类选择器、评论列表、目录结构等。 递归组件示例1:实现无限级分类选择器 首先,我…

    other 2023年6月27日
    00
  • Android使用TypeFace设置TextView的文字字体

    当使用Android开发时,可以使用Typeface类来设置TextView的文字字体。下面是使用Typeface设置TextView字体的完整攻略: 首先,确保你有所需的字体文件。你可以从字体库网站下载字体文件,或者使用自定义字体文件。 将字体文件放置在assets文件夹下。如果assets文件夹不存在,可以在项目的app/src/main目录下创建一个新…

    other 2023年8月26日
    00
  • Docker配置容器位置与小技巧总结

    下面是“Docker配置容器位置与小技巧总结”的完整攻略: 1. 配置容器位置 在Docker中,我们可以使用–volume参数来将本地文件夹挂载到Docker容器中,从而使得容器中的文件可以持久化保存在本地文件夹中。例如,我们可以使用以下命令将本地文件夹/home/user/data挂载到容器的/data文件夹中: docker run –volume…

    other 2023年6月27日
    00
  • Android实战APP启动速度优化

    以下是Android实战APP启动速度优化的完整攻略: 1. 减少启动时的冷启动时间 使用启动页(Splash Screen):在应用启动时显示一个简单的启动页,以便在后台进行必要的初始化操作,同时给用户一个加载的提示。 延迟加载非必要资源:将非必要的资源加载延迟到应用启动后再进行,以减少启动时的资源加载时间。 示例1:使用启动页 public class …

    other 2023年10月16日
    00
合作推广
合作推广
分享本页
返回顶部