配置webView加载h5页面

如下都是常用配置。直接粘贴即可

        val webClient = object : WebViewClient() {
    
    
            override fun onLoadResource(view: WebView?, url: String?) {
    
    
                if (url != null && url.toString().contains("&vcode=")) {
    
    
                    isRefresh = true
                }
                super.onLoadResource(view, url)
            }
        }
        //    /cert?developerId=1615176488011876609

        vBinding.wvSign.webViewClient = webClient
        val webSettings = vBinding.wvSign.settings
        webSettings.javaScriptEnabled = true  // 开启 JavaScript 交互
        webSettings.setAppCacheEnabled(true) // 启用或禁用缓存
        webSettings.cacheMode = WebSettings.LOAD_DEFAULT // 只要缓存可用就加载缓存, 哪怕已经过期失效 如果缓存不可用就从网络上加载数据
        webSettings.setAppCachePath(cacheDir.path) // 设置应用缓存路径
        webSettings.blockNetworkImage = false //解决图片不显示
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    
    
            webSettings.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW
        }


        // 缩放操作
        webSettings.setSupportZoom(true) // 支持缩放 默认为true 是下面那个的前提
        webSettings.builtInZoomControls = true // 设置内置的缩放控件 若为false 则该WebView不可缩放
        webSettings.displayZoomControls = true // 隐藏原生的缩放控件

        webSettings.blockNetworkImage = false // 禁止或允许WebView从网络上加载图片
        webSettings.loadsImagesAutomatically = true // 支持自动加载图片

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    
    
            webSettings.safeBrowsingEnabled = true // 是否开启安全模式
        }

        webSettings.javaScriptCanOpenWindowsAutomatically = true // 支持通过JS打开新窗口
        webSettings.domStorageEnabled = true // 启用或禁用DOM缓存
        webSettings.setSupportMultipleWindows(true) // 设置WebView是否支持多窗口

        // 设置自适应屏幕, 两者合用
        webSettings.useWideViewPort = true  // 将图片调整到适合webview的大小
        webSettings.loadWithOverviewMode = true  // 缩放至屏幕的大小
        webSettings.allowFileAccess = true // 设置可以访问文件

        webSettings.setGeolocationEnabled(true) // 是否使用地理位置

        vBinding.wvSign.fitsSystemWindows = true
        vBinding.wvSign.setLayerType(View.LAYER_TYPE_HARDWARE, null)
        vBinding.wvSign.loadUrl(signUrl)

//监听返回按钮
webView.setOnKeyListener {
    
     view, keyCode, keyEvent ->
         if (keyEvent.action == KeyEvent.ACTION_DOWN) {
    
    
                if (keyCode == KeyEvent.KEYCODE_BACK && vBinding.wvSign.canGoBack()) {
    
    
                    vBinding.wvSign.goBack()
                    return@setOnKeyListener true
                }
         }
  return@setOnKeyListener false
}

猜你喜欢

转载自blog.csdn.net/lixinxiaos/article/details/117988506