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 的使用详解》

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

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

相关文章

  • phpstorm技巧篇–全局搜索

    以下是PhpStorm技巧篇–全局搜索的完整攻略,包括两个示例说明。 1. 全局搜索简介 全局搜索是一种在整个项目中查找特定文本的功能。在PhpStorm中,可以使用全局搜索来查找变量、函数、类、文件等。全局搜索可以帮助用户快速定位代码中的特定部分,提高开发效率。 2. 全局搜索的使用 要使用全局搜索,可以按照以下步骤进行: 打开全局搜索窗口:在PhpSt…

    other 2023年5月9日
    00
  • win10系统电脑鼠标右键没有个性化选择怎么办 简单几步快速设置个性化

    下面是针对“win10系统电脑鼠标右键没有个性化选择怎么办”的详细攻略。 一、查看右键菜单选项 首先,右击桌面空白处,看看右键菜单中是否有“个性化”选项。 如果没有“个性化”选项,则可以按住Shift键,同时右击空白处,看看菜单中是否有“打开 Powershell 窗口”选项。 如果仍然没有“个性化”或“Powershell”选项,可能是系统出现了故障,需要…

    other 2023年6月27日
    00
  • 如何使用pyinstaller打包32位的exe程序

    如何使用PyInstaller打包32位的exe程序 PyInstaller是一个用于将Python程序打包成独立可执行文件(exe)的工具。默认情况下,PyInstaller会根据操作系统的位数(32位或64位)生成相应的可执行文件。如果你需要生成32位的exe程序,可以按照以下步骤进行操作: 步骤1:安装PyInstaller 首先,确保你已经安装了Py…

    other 2023年7月28日
    00
  • C#面试题总结——程序设计基础

    C#面试题总结——程序设计基础 C#语言无疑是现在应用最广泛的一种编程语言之一,面对越来越激烈的竞争,对于C#程序员而言,打好程序设计基础,掌握C#编程是关键。以下是本文整理的C#面试题,旨在帮助C#程序员提高自己的技能水平。 一、数据类型 1.1 值类型和引用类型 在C#中,值类型和引用类型是两种不同的类型,它们存储在内存中的位置也不同。 值类型存储在栈中…

    其他 2023年3月28日
    00
  • HTML中css和js链接中的版本号(刷新缓存)

    当在HTML中链接CSS和JS文件时,可以通过添加版本号来刷新缓存。这样做的目的是确保浏览器能够获取到最新的文件,而不是使用缓存中的旧文件。下面是详细的攻略: 手动添加版本号:在HTML文件中手动添加版本号是最简单的方法。你可以在CSS和JS文件的链接后面添加一个查询参数,例如?v=1.0。每当你更新文件时,只需更改版本号即可。这会迫使浏览器重新下载文件,因…

    other 2023年8月2日
    00
  • jquery实现加载更多”转圈圈”效果(示例代码)

    下面是详细的攻略。 1. 什么是“加载更多”功能? “加载更多”功能是指在页面上展现一部分数据,当用户滚动到页面底部时,自动加载更多数据,让用户可以无限滚动阅读。 2. 如何实现“加载更多”功能? 实现“加载更多”功能可以使用ajax技术和jquery库。ajax技术可以帮助我们在不刷新页面的情况下向服务器发送请求,jquery可以帮助我们方便地操作DOM元…

    other 2023年6月25日
    00
  • Android 网络请求框架Volley实例详解

    Android 网络请求框架Volley实例详解 Volley是一种用于Android应用程序的网络请求框架,它提供了简单且强大的API,用于处理网络请求和响应。本攻略将详细介绍如何使用Volley进行网络请求,并提供两个示例说明。 步骤1:添加Volley依赖 首先,您需要在您的Android项目中添加Volley库的依赖。在您的项目的build.grad…

    other 2023年8月26日
    00
  • cad备份文件在哪里

    下面我将为您详细讲解如何备份CAD文件。 备份CAD文件的常用方法 在CAD软件内,备份文件有两种常用的方法: 复制文件 打开CAD软件后,选择要备份的文件,右键点击,选择“复制”,再右键点击要复制到的目录,选择“粘贴”。或者使用快捷键Ctrl+C和Ctrl+V进行复制和粘贴。这种方法适用于单个文件的备份。 存储文件 打开CAD软件后,选择“文件” – “另…

    其他 2023年4月16日
    00
合作推广
合作推广
分享本页
返回顶部