Pu Zhibing
2025-12-11 ab0c19e49fabdb8cc6eea454ea455bce2efbb718
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
104
105
106
107
108
109
110
111
112
113
114
115
116
package com.igo.user.dialog
 
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 android.webkit.WebViewClient
import android.widget.RadioGroup
import android.widget.TextView
import androidx.fragment.app.DialogFragment
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.screenWidth
import com.igo.user.R
import com.igo.user.utils.Const
import org.jetbrains.anko.support.v4.find
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 {
        requireArguments().getString("privacy")?:":"
    }
    private val user by lazy {
        requireArguments().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)
    }
 
    private val tv_ok by lazy { find<TextView>(R.id.tv_ok) }
    private val tv_cancel by lazy { find<TextView>(R.id.tv_cancel) }
    private val sc_content by lazy { find<WebView>(R.id.sc_content) }
    private val rg_title by lazy { find<RadioGroup>(R.id.rg_title) }
 
 
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        val settings = sc_content.settings
        settings.javaScriptEnabled = true
        settings.javaScriptCanOpenWindowsAutomatically = true
        settings.defaultTextEncodingName = "utf-8"
        settings.domStorageEnabled = true
        settings.setSupportZoom(true)
//        settings.textZoom = 200
        settings.useWideViewPort = true
        settings.loadWithOverviewMode = true
        settings.layoutAlgorithm = WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING
        sc_content.webChromeClient = object : WebChromeClient() {}
        sc_content.webViewClient = object : WebViewClient() {}
 
        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>"
        sc_content!!.loadDataWithBaseURL(
            null,
            sHead + privacy,
            "text/html",
            "utf-8",
            null
        )
        tv_cancel.setOnClickListener {
            dismiss()
        }
 
        rg_title.setOnCheckedChangeListener { _, i ->
            if (i == R.id.rb_privacy)
                sc_content!!.loadDataWithBaseURL(
                    null,
                    sHead + privacy,
                    "text/html",
                    "utf-8",
                    null
                )
            else
                sc_content!!.loadDataWithBaseURL(
                    null,
                    sHead + user,
                    "text/html",
                    "utf-8",
                    null
                )
        }
        tv_ok.setOnClickListener {
            SPUtils.instance().put(Const.User.IS_AGREE,true).apply()
            dismiss()
        }
    }
 
    override fun onDismiss(dialog: DialogInterface) {
        super.onDismiss(dialog)
        dismissCallbak?.onDismiss()
    }
 
 
    interface OnDismiss{
        fun onDismiss()
    }
    private var dismissCallbak:OnDismiss? = null
    fun setDismissCallback(callback:OnDismiss){
        this.dismissCallbak = callback
    }
}