From 0ec173677d49bae2b540d7af5c90219536f73b02 Mon Sep 17 00:00:00 2001 From: XuqmGroup Date: Thu, 18 Jun 2026 14:05:43 +0800 Subject: [PATCH] =?UTF-8?q?feat(webview):=20=E6=B7=BB=E5=8A=A0=20onProgres?= =?UTF-8?q?sChanged=20=E5=9B=9E=E8=B0=83=EF=BC=8C=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=8A=A0=E8=BD=BD=E8=BF=9B=E5=BA=A6=E7=9B=91?= =?UTF-8?q?=E5=90=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xuqm/sdk/webview/XWebViewTypes.kt | 2 ++ .../src/main/java/com/xuqm/sdk/webview/XWebViewView.kt | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/sdk-webview/src/main/java/com/xuqm/sdk/webview/XWebViewTypes.kt b/sdk-webview/src/main/java/com/xuqm/sdk/webview/XWebViewTypes.kt index c4b9ba3..88ba494 100644 --- a/sdk-webview/src/main/java/com/xuqm/sdk/webview/XWebViewTypes.kt +++ b/sdk-webview/src/main/java/com/xuqm/sdk/webview/XWebViewTypes.kt @@ -18,6 +18,8 @@ data class XWebViewConfig( val onMessage: ((String) -> Unit)? = null, /** 页面加载失败时回调。errorCode / description / failingUrl 对应 WebViewClient.onReceivedError 参数。 */ val onPageError: ((errorCode: Int, description: String, failingUrl: String) -> Unit)? = null, + /** 页面加载进度回调(0-100)。 */ + val onProgressChanged: ((Int) -> Unit)? = null, ) interface XWebViewController { diff --git a/sdk-webview/src/main/java/com/xuqm/sdk/webview/XWebViewView.kt b/sdk-webview/src/main/java/com/xuqm/sdk/webview/XWebViewView.kt index a2c321f..dc81f29 100644 --- a/sdk-webview/src/main/java/com/xuqm/sdk/webview/XWebViewView.kt +++ b/sdk-webview/src/main/java/com/xuqm/sdk/webview/XWebViewView.kt @@ -548,6 +548,11 @@ fun XWebViewView( } webChromeClient = object : WebChromeClient() { + override fun onProgressChanged(view: WebView?, newProgress: Int) { + super.onProgressChanged(view, newProgress) + mainHandler.post { config.onProgressChanged?.invoke(newProgress) } + } + override fun onPermissionRequest(request: PermissionRequest) { if (PermissionRequest.RESOURCE_VIDEO_CAPTURE in request.resources) { if (ContextCompat.checkSelfPermission(ctx, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {