在我的应用程序中,我在Kotlin中添加了向下滑动重新加载,并且可以正常工作。向下滑动时,它将显示刷新小部件,然后返回并开始刷新页面。但自从刷新网站以来,我的应用需要花几秒钟来刷新。有人知道如何仅在刷新完成后才使刷新窗口小部件备份吗?
这是我的代码:
MainActivity.kt:
import android.annotation.SuppressLint
import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.view.View
import android.webkit.PermissionRequest
import android.webkit.WebChromeClient
import android.webkit.WebView
import android.webkit.WebViewClient
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
val FINE_LOCATION_RQ = 101
val CAMERA_RQ = 102
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
refreshApp()
webViewSetup()
}
@SuppressLint("SetJavaScriptEnabled")
private fun webViewSetup() {
val wb_webView = findViewById<View>(R.id.wb_webView) as WebView
wb_webView.settings.javaScriptEnabled = true
wb_webView.settings.domStorageEnabled = true
wb_webView.webViewClient = WebViewClient()
wb_webView.loadUrl("https://google.com/")
}
private fun refreshApp() {
val webView = findViewById<View>(R.id.wb_webView) as WebView
val swipeToRefresh = findViewById<SwipeRefreshLayout>(R.id.swipeToRefresh)
swipeToRefresh.setOnRefreshListener {
webView.loadUrl( "javascript:window.location.reload( true )" )
swipeToRefresh.isRefreshing = false
}
}
override fun onBackPressed() {
val wb_webView = findViewById<View>(R.id.wb_webView) as WebView
if (wb_webView.canGoBack()) {
wb_webView.goBack()
} else {
super.onBackPressed()
}
}
}
activity_main.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipeToRefresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/wb_webView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</RelativeLayout>
有人知道如何做到这一点吗?
您可以覆盖WebClient中的onPageFinished,例如
mWebView.setWebViewClient(object : WebViewClient() {
override fun onPageFinished(view: WebView, url: String) {
swipeToRefresh.isRefreshing = false
}
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句