diff --git a/app/src/main/kotlin/farm/hobbs/kioskbrowser/LoadingProgress.kt b/app/src/main/kotlin/farm/hobbs/kioskbrowser/LoadingProgress.kt new file mode 100644 index 0000000..5205ef0 --- /dev/null +++ b/app/src/main/kotlin/farm/hobbs/kioskbrowser/LoadingProgress.kt @@ -0,0 +1,46 @@ +package farm.hobbs.kioskbrowser + +import android.view.View +import android.webkit.WebChromeClient +import android.webkit.WebView +import android.widget.ProgressBar + +/** + * WebChromeClient that updates a ProgressBar during page loads. + * + * Usage: + * ``` + * webView.webChromeClient = LoadingProgress.createClient(progressBar) + * ``` + */ +object LoadingProgress { + + /** + * Create a WebChromeClient that controls the progress bar + */ + fun createClient(progressBar: ProgressBar): WebChromeClient { + return object : WebChromeClient() { + override fun onProgressChanged(view: WebView?, newProgress: Int) { + super.onProgressChanged(view, newProgress) + + progressBar.progress = newProgress + + if (newProgress < 100) { + progressBar.visibility = View.VISIBLE + } else { + // Hide with slight delay for smooth UX + progressBar.postDelayed({ + progressBar.visibility = View.GONE + }, 200) + } + } + } + } + + /** + * Extension to easily wire up progress tracking + */ + fun WebView.setupProgressBar(progressBar: ProgressBar) { + webChromeClient = createClient(progressBar) + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 42576c4..51372d5 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -8,6 +8,19 @@ android:layout_width="match_parent" android:layout_height="match_parent" /> + + + #BBDEFB #FFFFFF #000000 + #667eea