1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Android WebView加载网页 html文件显示加载进度

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

时间:2024-07-07 13:56:20

相关推荐

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如下:

<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"xmlns:app="/apk/res-auto"><WebViewandroid:id="@+id/web_view"android:layout_width="match_parent"android:layout_height="match_parent" /><ProgressBarandroid:id="@+id/progressBar"style="?android:attr/progressBarStyleHorizontal"android:layout_width="match_parent"android:layout_height="5dp"android:background="@null"android:indeterminateOnly="false"android:max="100"app:layout_constraintTop_toTopOf="parent"android:progressDrawable="@drawable/progress_bar_horizontal"/></androidx.constraintlayout.widget.ConstraintLayout>

进度条progress_bar_horizontal.xml样式如下:

<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="/apk/res/android" ><itemandroid:id="@android:id/background"android:drawable="@color/white"/><item android:id="@android:id/progress"><clip><shape><gradientandroid:angle="270"android:centerColor="#00923F"android:centerY="0.75"android:endColor="#888C98"android:startColor="#00923F" /></shape></clip></item></layer-list>

三、在 Activity 中使用视图绑定

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

1、调用生成的绑定类中包含的静态 inflate() 方法。此操作会创建该绑定类的实例以供 Activity 使用。

2、通过调用 getRoot() 方法或使用 Kotlin 属性语法获取对根视图的引用。

3、将根视图传递到 setContentView(),使其成为屏幕上的活动视图。

class WebViewActivity : AppCompatActivity() {private lateinit var mViewBinding: ActivityWebViewBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)mViewBinding = ActivityWebViewBinding.inflate(layoutInflater)setContentView(mViewBinding.root)}}

四、设置WebView

class WebViewActivity : AppCompatActivity() {private lateinit var mViewBinding: ActivityWebViewBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)mViewBinding = ActivityWebViewBinding.inflate(layoutInflater)setContentView(mViewBinding.root)val webSettings = mViewBinding.webView.settingswebSettings.javaScriptEnabled = truewebSettings.domStorageEnabled = true //支持webView从localStorage中读取数据mViewBinding.webView.webChromeClient = object : WebChromeClient() { // 设置加载进度override fun onProgressChanged(view: WebView?, newProgress: Int) {mViewBinding.progressBar.progress = newProgressif (newProgress == 100) {mViewBinding.progressBar.visibility = View.GONE} else {mViewBinding.progressBar.visibility = View.VISIBLE}super.onProgressChanged(view, newProgress)}}mViewBinding.webView.loadUrl("");}}

清单文件中添加网络权限

<uses-permission android:name="android.permission.INTERNET" />

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。