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