lmw
2023-06-13 adf8013576cbdd12e5ebea8ff7e32baf5d558b27
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package com.kuanzhai.user.dialog
 
import android.annotation.SuppressLint
import android.content.DialogInterface
import android.os.Bundle
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.webkit.WebChromeClient
import android.webkit.WebSettings
import android.webkit.WebView
import androidx.fragment.app.DialogFragment
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.screenWidth
import com.kuanzhai.user.R
import com.kuanzhai.user.interfaces.InnerJsInterface
import com.kuanzhai.user.utils.Const
import kotlinx.android.synthetic.main.dialog_user_rule.*
import org.jetbrains.anko.wrapContent
 
class UserRuleDialog: DialogFragment() {
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? =
            inflater.inflate(R.layout.dialog_user_rule,container,false)
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setStyle(STYLE_NO_FRAME, R.style.FadeDialog)
    }
 
    private val privacy by lazy {
        arguments!!.getString("privacy")?:""
    }
    private val user by lazy {
        arguments!!.getString("user")?:""
    }
    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        dialog?.window?.setLayout((screenWidth()*0.85).toInt(), wrapContent)
        dialog?.window?.setGravity(Gravity.CENTER)
        dialog?.setCanceledOnTouchOutside(false)
    }
 
 
 
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        setWebview(sc_content,privacy)
        tv_cancel.setOnClickListener {
            dismiss()
        }
 
        rg_title.setOnCheckedChangeListener { _, i ->
            if (i == R.id.rb_privacy)
                setWebview(sc_content,privacy)
            else
                setWebview(sc_content,user)
        }
        tv_ok.setOnClickListener {
            SPUtils.instance().put(Const.User.IS_AGREE,true).apply()
            dismiss()
        }
    }
 
    override fun onDismiss(dialog: DialogInterface) {
        super.onDismiss(dialog)
        dismissCallbak?.onDismiss()
    }
 
    @SuppressLint("SetJavaScriptEnabled")
    private fun setWebview(webView: WebView, url: String) {
        val settings = webView.settings
        settings.defaultTextEncodingName = "utf-8" //设置编码格式
        settings.useWideViewPort = true //设置此属性,可任意比例缩放
        settings.loadWithOverviewMode = true // 页面支持缩放:
        settings.builtInZoomControls = true
        settings.setSupportZoom(false) //支持缩放
        settings.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK //关闭webview中缓存
        settings.setNeedInitialFocus(true) //当webview调用requestFocus时为webview设置节点
        settings.loadsImagesAutomatically = true //支持自动加载图片
        settings.javaScriptEnabled = true
        settings.domStorageEnabled = true
        webView.isScrollContainer = false
        webView.isScrollbarFadingEnabled = false
        webView.scrollBarStyle = View.SCROLLBARS_OUTSIDE_OVERLAY
        webView.addJavascriptInterface(InnerJsInterface(), "HTMLOUT")
        if (url!!.startsWith("http")) {
            webView.loadUrl(url)
        } else {
            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)
        }
    }
 
    interface OnDismiss{
        fun onDismiss()
    }
    private var dismissCallbak:OnDismiss? = null
    fun setDismissCallback(callback:OnDismiss){
        this.dismissCallbak = callback
    }
}