From 90cacdc9144b9aa57c4f0879bed02ad6db41dad6 Mon Sep 17 00:00:00 2001 From: moreoronce Date: Mon, 7 Oct 2024 17:44:41 +0800 Subject: [PATCH] Add back navigation support in WebViewActivity - Fixed the implemented onBackPressed method to enable back navigation within the WebView. --- .../com/example/lobchat/WebViewActivity.kt | 37 ++++-- .../drawable/button_rounded_background.xml | 8 +- .../res/drawable/search_box_background.xml | 2 +- app/src/main/res/layout/activity_main.xml | 113 +++++++++--------- app/src/main/res/values/themes.xml | 5 +- 5 files changed, 93 insertions(+), 72 deletions(-) diff --git a/app/src/main/java/com/example/lobchat/WebViewActivity.kt b/app/src/main/java/com/example/lobchat/WebViewActivity.kt index f481dc1..cda7e8d 100644 --- a/app/src/main/java/com/example/lobchat/WebViewActivity.kt +++ b/app/src/main/java/com/example/lobchat/WebViewActivity.kt @@ -45,6 +45,7 @@ class WebViewActivity : AppCompatActivity() { } } + @SuppressLint("ClickableViewAccessibility") private fun setupRefreshButton() { // 将按钮置于最前,并设置点击和拖动事件 refreshButton.bringToFront() @@ -63,7 +64,7 @@ class WebViewActivity : AppCompatActivity() { val webSettings: WebSettings = webView.settings webSettings.javaScriptEnabled = true webSettings.domStorageEnabled = true - webSettings.cacheMode = WebSettings.LOAD_DEFAULT + webSettings.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK webSettings.databaseEnabled = true webSettings.mixedContentMode = WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE @@ -153,11 +154,23 @@ class WebViewActivity : AppCompatActivity() { Snackbar.make(findViewById(android.R.id.content), message, Snackbar.LENGTH_LONG).show() } + override fun onBackPressed() { + // 检查 WebView 是否可以后退 + if (webView.canGoBack()) { + webView.goBack() // 如果可以后退,则调用 goBack() + } else { + super.onBackPressed() // 否则调用默认的后退行为 + } + } + private inner class DraggableTouchListener : View.OnTouchListener { + private var dX = 0f private var dY = 0f private var isClick = false + private val touchSlop = 10 // 触摸阈值,用于判断是否为点击 + @SuppressLint("ClickableViewAccessibility") override fun onTouch(view: View, event: MotionEvent): Boolean { when (event.action) { MotionEvent.ACTION_DOWN -> { @@ -166,20 +179,28 @@ class WebViewActivity : AppCompatActivity() { isClick = true } MotionEvent.ACTION_MOVE -> { - view.animate() - .x(event.rawX + dX) - .y(event.rawY + dY) - .setDuration(0) - .start() - isClick = false + val deltaX = event.rawX + dX - view.x + val deltaY = event.rawY + dY - view.y + if (Math.abs(deltaX) > touchSlop || Math.abs(deltaY) > touchSlop) { + isClick = false // 超过阈值视为拖动 + view.animate() + .x(event.rawX + dX) + .y(event.rawY + dY) + .setDuration(0) + .start() + } } MotionEvent.ACTION_UP -> { if (isClick) { - logAndReload() + // 添加延迟,确保是点击而非拖动 + view.postDelayed({ + logAndReload() + }, 100) // 延迟100毫秒 } } } return true } } + } diff --git a/app/src/main/res/drawable/button_rounded_background.xml b/app/src/main/res/drawable/button_rounded_background.xml index a5e7827..b5d3a9f 100644 --- a/app/src/main/res/drawable/button_rounded_background.xml +++ b/app/src/main/res/drawable/button_rounded_background.xml @@ -1,13 +1,13 @@ - - + + + android:color="@android:color/transparent"/> + android:bottom="8dp"/> diff --git a/app/src/main/res/drawable/search_box_background.xml b/app/src/main/res/drawable/search_box_background.xml index 4ce5da2..379c7ee 100644 --- a/app/src/main/res/drawable/search_box_background.xml +++ b/app/src/main/res/drawable/search_box_background.xml @@ -1,6 +1,6 @@ - + + + android:layout_width="match_parent" + android:layout_height="match_parent" + android:fitsSystemWindows="true"> + android:id="@+id/logoPos" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:gravity="center" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginBottom="60dp" + app:layout_constraintBottom_toTopOf="@+id/linearLayout"> + android:id="@+id/logo_3d" + android:layout_width="80dp" + android:layout_height="80dp" + android:contentDescription="@string/logo_3d_description" + android:src="@drawable/logo_3d" /> + android:id="@+id/appLogo" + android:layout_width="200dp" + android:layout_height="80dp" + android:contentDescription="@string/app_logo" + android:src="@drawable/logo" /> + android:layout_width="0dp" + android:layout_height="wrap_content" + android:orientation="vertical" + android:gravity="center" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintTop_toBottomOf="@id/logoPos" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintWidth_percent="0.8" + android:id="@+id/linearLayout"> - - + android:layout_marginBottom="8dp"> + + + android:id="@+id/loadUrlButton" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="10dp" + android:backgroundTint="@color/gray_dark_0" + android:text="@string/send" + android:textColor="@android:color/white" + android:textAllCaps="false" + app:cornerRadius="4dp" /> diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 88b3f8a..d1cfaae 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -5,11 +5,8 @@ @color/purple_dark_9 - - @color/design_default_color_background - - @color/design_default_color_background + @color/purple_dark_9 \ No newline at end of file