lmw
2023-04-17 51f657872f152a115fb055ad8860093a5cdbc12d
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
package com.fuban.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 androidx.fragment.app.DialogFragment
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.screenWidth
import com.fuban.user.R
import com.fuban.user.utils.Const
import com.fuban.user.utils.InnerJsInterface
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)
        val settings = sc_content.settings
        settings.javaScriptEnabled = true
        settings.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK
        settings.javaScriptCanOpenWindowsAutomatically = true
        settings.builtInZoomControls = true
        settings.useWideViewPort = false //将图片调整到适合webview的大小
        settings.setSupportZoom(false) //支持缩放
        settings.supportMultipleWindows() //多窗口
        settings.loadWithOverviewMode = true // 页面支持缩放:
        settings.useWideViewPort = true //设置此属性,可任意比例缩放
        settings.defaultTextEncodingName = "utf-8"
        settings.domStorageEnabled = true
        settings.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK //关闭webview中缓存
        settings.allowFileAccess = true //设置可以访问文件
        settings.setNeedInitialFocus(true) //当webview调用requestFocus时为webview设置节点
        settings.javaScriptCanOpenWindowsAutomatically = true //支持通过JS打开新窗口
        settings.loadsImagesAutomatically = true //支持自动加载图片
        sc_content.isScrollContainer = false
        sc_content.isScrollbarFadingEnabled = false
        sc_content.scrollBarStyle = View.SCROLLBARS_OUTSIDE_OVERLAY
        sc_content.webChromeClient = object : WebChromeClient() {}
        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
    }
}