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) {