安卓替換webview默認報錯頁面 目標 主要代碼 源代碼

目標

替換掉webView默認的報錯頁面。效果圖如下:


主要代碼

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        initListeners()
        initViews()
    }

    private fun initListeners() {
        retryIv.setOnClickListener {
            webView.reload()
            webView.visibility = View.INVISIBLE
            showErrorView(false)
        }
    }

    private fun initViews() {
        webView.loadUrl("https://www.baidu.com/")
        webView.settings.javaScriptEnabled = true//設置webView屬性,能夠執行Javascript腳本
        val webSettings = webView.settings
        webSettings.javaScriptEnabled = true //允許加載javascript
        webSettings.setSupportZoom(true) //允許縮放
        webSettings.builtInZoomControls = true //原網頁基礎上縮放
        webSettings.useWideViewPort = true //任意比例縮放
        webView.webViewClient = webClient
        webView.webChromeClient = webChromeClient
    }

    private var webClient: WebViewClient = object : WebViewClient() {
        //處理網頁加載失敗時
        override fun onReceivedError(
            view: WebView,
            errorCode: Int,
            description: String,
            failingUrl: String
        ) {
            showErrorView(true) //顯示錯誤頁面
        }
    }

    private var webChromeClient: WebChromeClient = object : WebChromeClient() {
        override fun onProgressChanged(view: WebView, newProgress: Int) {
            super.onProgressChanged(view, newProgress)
            if (newProgress >= 100) {
                view.visibility = View.VISIBLE
            }
        }
    }

    private fun showErrorView(isToShow: Boolean) {
        errorView.visibility = if (isToShow) View.VISIBLE else View.GONE
    }
}

源代碼

https://gitee.com/cxyzy1/webviewErrorPageReplacement

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章