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(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 = "" + "" + "" + "" webView!!.loadDataWithBaseURL(null, sHead + url, "text/html", "utf-8", null) } else { webView.loadUrl(url) } } protected open fun resetTitle() = false override fun finishWhenCancelDialog(): Boolean = false }