lmw
2024-09-25 92778728b83ce1a34ba21bcdb061afdeca16cce5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package cn.sinata.xldutils.activity
 
import android.graphics.Bitmap
import android.os.Bundle
import android.text.TextUtils
import android.view.View
import android.webkit.WebChromeClient
import android.webkit.WebView
import android.webkit.WebViewClient
import android.widget.TextView
import android.webkit.WebSettings
import cn.sinata.xldutils.R
import cn.sinata.xldutils.visible
import org.jetbrains.anko.find
 
open class WebViewActivity : TitleActivity() {
 
    private val webView by lazy {
        find<WebView>(R.id.webView)
    }
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_web_view)
        val t = intent.getStringExtra("title")
        title = t
        initView()
    }
 
    private fun initView() {
        val settings = webView.settings
        settings.javaScriptEnabled = true
        settings.javaScriptCanOpenWindowsAutomatically = true
        settings.defaultTextEncodingName = "utf-8"
        settings.domStorageEnabled = true
//        settings.setSupportZoom(true)
//        settings.textZoom = 300
//        settings.useWideViewPort = true
//        settings.loadWithOverviewMode = true
//        settings.layoutAlgorithm = WebSettings.LayoutAlgorithm.SINGLE_COLUMN
 
        webView.webChromeClient = object : WebChromeClient() {
            override fun onReceivedTitle(view: WebView, title: String?) {
                super.onReceivedTitle(view, title)
                if (resetTitle()) {
                    setTitle(title)
                }
            }
        }
        webView.webViewClient = object : WebViewClient() {
            override fun onPageFinished(view: WebView, url: String?) {
                super.onPageFinished(view, url)
                dismissDialog()
            }
 
            override fun onPageStarted(view: WebView, url: String?, favicon: Bitmap?) {
                super.onPageStarted(view, url, favicon)
                showDialog()
            }
 
            override fun shouldOverrideUrlLoading(view: WebView, url: String?): Boolean {
                if (!TextUtils.isEmpty(url)) {
                    webView.loadUrl(url)
                }
                return true
            }
        }
        val type = intent.getIntExtra("type", 1)
        val url = intent.getStringExtra("url")
        if (type == 1) {
            val sHead =
                "<html><head><meta name=\"viewport\" content=\"width=device-width, " + "initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" />" + "<style>img{max-width:100% !important;height:auto !important;}</style>" + "<style>body{max-width:100% !important;}</style>" + "</head><body>"
            webView!!.loadDataWithBaseURL(null, sHead + url, "text/html", "utf-8", null)
        } else {
            webView.loadUrl(url)
        }
    }
 
    protected open fun resetTitle() = false
    override fun finishWhenCancelDialog(): Boolean = false
}