安卓WebView相关设置


Android WebView 的相关设置

settings相关设置

 webView.settings.apply {
            //开启js
            javaScriptEnabled = true
            //弹出框的设置
            //1.NARROW_COLUMNS:可能的话使所有列的宽度不超过屏幕宽度
            //2.NORMAL:正常显示不做任何渲染
            //3.SINGLE_COLUMN:把所有内容放大webview等宽的一列中
            layoutAlgorithm = WebSettings.LayoutAlgorithm.NARROW_COLUMNS
            //它会使用网页元标记中定义的属性加载WebView。因此它按照html中的定义缩放网页。
            useWideViewPort = true

            /************ 缓存模式 **********/
            //保存密码
            savePassword = true
            //保存表单数据
            saveFormData = true
            //开启数据库
            databaseEnabled = true
            //设置DOM Storage缓存
            domStorageEnabled = true
            //关闭webView中缓存
            cacheMode = WebSettings.LOAD_NO_CACHE
            //设置缓存路径
            setAppCachePath(cacheDir.absolutePath)

            /************ 页面自动适配 **********/
            //步骤1.隐藏webview缩放按钮
            displayZoomControls = true

            //步骤2 设置页面布局
            //1)方式一,控制页面布局,有一定缺陷可能导致页面显示温度,不推荐
            layoutAlgorithm = WebSettings.LayoutAlgorithm.SINGLE_COLUMN

            //2)方式二,自动根据手机分辨率缩放,推荐
            useWideViewPort = true
            loadWithOverviewMode = true

            /************ 页面缩放支持 **********/
            //仅支持双击缩放,不支持触摸缩放(android4.0)
            setSupportZoom(true)
            //设置支持缩放,设置了此属性,setSupportZoom(true);也默认设置为true
            builtInZoomControls = true

            /************ 图片加载 **********/
            //默认为false,true表示阻塞图片请求
            blockNetworkImage = true
            //支持自动加载图片
            loadsImagesAutomatically = true

            /************ 字体相关 **********/
            //设置WebView标准字体库字体,默认字体“sans-serif”。
            standardFontFamily = ""
            //设置WebView字体最小值,默认值8,取值1到72
            minimumFontSize = 8
            //设定编码格式
            defaultTextEncodingName = "UTF-8"
            //设置在WebView内部是否允许访问文件
            allowFileAccess = true
            //设置WebView中加载页面字体变焦百分比,默认100,整型数。
            textZoom = 100

            /************ 插件相关 **********/
            //支持插件
            pluginState = WebSettings.PluginState.ON
            setRenderPriority(WebSettings.RenderPriority.HIGH)
            //多窗口
            supportMultipleWindows()
            //当webview调用requestFocus时为webview设置节点 webview
            setNeedInitialFocus(true)
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                //设置Web调试
                WebView.setWebContentsDebuggingEnabled(true)

                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                    //解决加载Https和Http混合模式网页加载问题
                    mixedContentMode = WebSettings.LOAD_NORMAL
                }

            }
            //追加自定义标识符,一定要+=
            userAgentString += "/native_$packageName"
        }

WebClient相关设置

		//webView相关事件触发,就会通过webViewClient 中的方法回调通知
          webView.webViewClient = object: WebViewClient(){

            override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
                super.onPageStarted(view, url, favicon)
                Log.i("webViewClient" , "页面开始加载")
            }

            override fun onPageFinished(view: WebView?, url: String?) {
                super.onPageFinished(view, url)
                Log.i("webViewClient" , "页面加载完成回调")
            }

            override fun onLoadResource(view: WebView?, url: String?) {
                super.onLoadResource(view, url)
                Log.i("webViewClient" , "加载Url资源回调")
            }

            override fun onReceivedError(
                view: WebView?,
                request: WebResourceRequest?,
                error: WebResourceError?
            ) {
                super.onReceivedError(view, request, error)
                Log.i("webViewClient" , "访问地址错误回调")
            }

            override fun onReceivedSslError(
                view: WebView?,
                handler: SslErrorHandler?,
                error: SslError?
            ) {
                super.onReceivedSslError(view, handler, error)
                Log.i("webViewClient" , "加载SSl错误回调")
            }

        }

       

webChromeClient 相关设置

 //当影响浏览器的事件到来时,就会通过WebChromeClient中的方法回调通知用法。
        webView.webChromeClient = object : WebChromeClient(){
            override fun onJsAlert(
                view: WebView?,
                url: String?,
                message: String?,
                result: JsResult?
            ): Boolean {
                Log.i("webChromeClient" , "当网页调用alert()来弹出alert弹出框前回调,用以拦截alert()函数")
                return super.onJsAlert(view, url, message, result)
            }

            override fun onJsConfirm(
                view: WebView?,
                url: String?,
                message: String?,
                result: JsResult?
            ): Boolean {
                Log.i("webChromeClient" , "当网页调用confirm()来弹出confirm弹出框前回调,用以拦截confirm()函数")
                return super.onJsConfirm(view, url, message, result)
            }

            override fun onJsPrompt(
                view: WebView?,
                url: String?,
                message: String?,
                defaultValue: String?,
                result: JsPromptResult?
            ): Boolean {
                Log.i("webChromeClient" , "当网页调用prompt()来弹出prompt弹出框前回调,用以拦截prompt()函数")
                return super.onJsPrompt(view, url, message, defaultValue, result)
            }

            override fun onReceivedTitle(view: WebView?, title: String?) {
                Log.i("webChromeClient" , "网页的title回调")
                super.onReceivedTitle(view, title)
            }

            override fun onReceivedIcon(view: WebView?, icon: Bitmap?) {
                Log.i("webChromeClient" , "网页的icon回调")
                super.onReceivedIcon(view, icon)
            }

            override fun onShowFileChooser(
                webView: WebView?,
                filePathCallback: ValueCallback<Array<Uri>>?,
                fileChooserParams: FileChooserParams?
            ): Boolean {
                Log.i("webChromeClient" , "文件选择回调")
                return super.onShowFileChooser(webView, filePathCallback, fileChooserParams)
            }

            override fun onConsoleMessage(consoleMessage: ConsoleMessage?): Boolean {
                Log.i("webChromeClient" , "打印 console 信息")
                return super.onConsoleMessage(consoleMessage)
            }

            override fun onProgressChanged(view: WebView?, newProgress: Int) {
                super.onProgressChanged(view, newProgress)
                Log.i("webChromeClient" , "通知程序当前页面加载进度")
            }
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值