📜  在Android中的WebView中加载URL时如何在ProgressBar中显示进度?

📅  最后修改于: 2022-05-13 01:55:34.269000             🧑  作者: Mango

在Android中的WebView中加载URL时如何在ProgressBar中显示进度?

Android 中的 ProgressBar 是一个 UI 元素,它以一些动画的形式在后台显示一些正在完成的工作的状态。它可以是任何东西,如计算、加载、搜索、获取、下载等。ProgressBar 大致有两种类型,即旋转轮和单杠。

转轮进度条

水平进度条

在本文中,我们想向您展示如何在 Android 中实现 ProgressBar 并在加载特定网页之前显示它。

分步实施

第 1 步:在 Android Studio 中创建一个新项目

要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。我们在 Kotlin 中演示了该应用程序,因此请确保在创建新项目时选择 Kotlin 作为主要语言。



第 2 步:在 Manifest 文件 (AndroidManifest.xml) 中添加 Internet 权限

要加载网页,我们需要我们的应用程序使用 Internet。所以我们需要添加使用互联网的权限。

XML


    
    
    
    
    


XML


  
    
  
    
  


Kotlin
import android.os.Bundle
import android.view.View
import android.webkit.WebView
import android.widget.ProgressBar
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity() {
    
    // Declaring webView and progressBar
    private lateinit var webView: WebView
    lateinit var progressBar: ProgressBar
  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Initializing Webview and 
        // progressBar from the layout file
        webView = findViewById(R.id.webView)
        progressBar = findViewById(R.id.progressBar)
          
        // Setting a webViewClient
        webView.webViewClient = WebViewClient()
          
        // Loading a URL
        webView.loadUrl("https://geeksforgeeks.org")
    }
  
    // Overriding WebViewClient functions
    inner class WebViewClient : android.webkit.WebViewClient() {
        
        // Load the URL
        override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
            view.loadUrl(url)
            return false
        }
          
        // ProgressBar will disappear once page is loaded
        override fun onPageFinished(view: WebView, url: String) {
            super.onPageFinished(view, url)
            progressBar.visibility = View.GONE
        }
    }
}


第三步:在布局文件(activity_main.xml)中添加一个ProgressBar和一个WebView

XML



  
    
  
    
  

第 4 步:在主代码(MainActivity.kt)中添加

请参阅注释以获得更好的理解。

科特林

import android.os.Bundle
import android.view.View
import android.webkit.WebView
import android.widget.ProgressBar
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity() {
    
    // Declaring webView and progressBar
    private lateinit var webView: WebView
    lateinit var progressBar: ProgressBar
  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Initializing Webview and 
        // progressBar from the layout file
        webView = findViewById(R.id.webView)
        progressBar = findViewById(R.id.progressBar)
          
        // Setting a webViewClient
        webView.webViewClient = WebViewClient()
          
        // Loading a URL
        webView.loadUrl("https://geeksforgeeks.org")
    }
  
    // Overriding WebViewClient functions
    inner class WebViewClient : android.webkit.WebViewClient() {
        
        // Load the URL
        override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
            view.loadUrl(url)
            return false
        }
          
        // ProgressBar will disappear once page is loaded
        override fun onPageFinished(view: WebView, url: String) {
            super.onPageFinished(view, url)
            progressBar.visibility = View.GONE
        }
    }
}

输出:

您可以看到在页面加载之前运行的进度条。页面加载后,进度条就会消失。

想要一个更快节奏和更具竞争力的环境来学习 Android 的基础知识吗?
单击此处前往由我们的专家精心策划的指南,旨在让您立即做好行业准备!