Android WebView加载网页html文件显示加载进度

一、视图绑定

通过视图绑定功能,您可以更轻松地编写可与视图交互的代码。在模块中启用视图绑定之后,系统会为该模块中的每个 XML 布局文件生成一个绑定类。绑定类的实例包含对在相应布局中具有 ID 的所有视图的直接引用。

在大多数情况下,视图绑定会替代 findViewById。

视图绑定功能可按模块启用。要在某个模块中启用视图绑定,请将 viewBinding 元素添加到其 build.gradle 文件中,如下例所示:

    viewBinding {
        enabled = true
    }

二、新建加载WebViewActivity

新建WebViewActivity加载网页html文件

class WebViewActivity : AppCompatActivity() {
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }
}

页面xml文件activity_web_view如下:




    

    


进度条progress_bar_horizontal.xml样式如下:




    
    
        
            
                
            
        
    


三、在 Activity 中使用视图绑定

在 Activity 的 onCreate() 方法中执行以下步骤:

1、调用生成的绑定类中包含的静态 inflate() 方法。此操作会创建该绑定类的实例以供 Activity 使用。
2、通过调用 getRoot() 方法或使用 Kotlin 属性语法获取对根视图的引用。
3、将根视图传递到 setContentView(),使其成为屏幕上的活动视图。

class WebViewActivity : AppCompatActivity() {
    private lateinit var mViewBinding: ActivityWebViewBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        mViewBinding = ActivityWebViewBinding.inflate(layoutInflater)

        setContentView(mViewBinding.root)
        
    }
}

四、设置WebView

class WebViewActivity : AppCompatActivity() {
    private lateinit var mViewBinding: ActivityWebViewBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        mViewBinding = ActivityWebViewBinding.inflate(layoutInflater)

        setContentView(mViewBinding.root)

        val webSettings = mViewBinding.webView.settings
        webSettings.javaScriptEnabled = true
        webSettings.domStorageEnabled = true //支持webView从localStorage中读取数据

        mViewBinding.webView.webChromeClient = object : WebChromeClient() {  // 设置加载进度
            override fun onProgressChanged(view: WebView?, newProgress: Int) {
                mViewBinding.progressBar.progress = newProgress
                if (newProgress == 100) {
                    mViewBinding.progressBar.visibility = View.GONE
                } else {
                    mViewBinding.progressBar.visibility = View.VISIBLE
                }
                super.onProgressChanged(view, newProgress)

            }
        }

        mViewBinding.webView.loadUrl("https://www.baidu.com");
    }
}

清单文件中添加网络权限

    

运行就可以看到加载进度条了

你可能感兴趣的:(Android,android,html,webview)