IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 安卓WebView相关设置 -> 正文阅读

[移动开发]安卓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" , "通知程序当前页面加载进度")
            }
        }
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-03-11 22:21:45  更:2022-03-11 22:23:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 18:39:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码