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
package com.igo.user.dialog
 
import android.net.Uri
import android.os.Bundle
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.EditText
import android.widget.ImageView
import android.widget.TextView
import androidx.fragment.app.DialogFragment
import cn.sinata.xldutils.utils.myToast
import com.facebook.drawee.backends.pipeline.Fresco
import com.facebook.drawee.view.SimpleDraweeView
import com.igo.user.R
import com.igo.user.network.Apis
import org.jetbrains.anko.matchParent
import org.jetbrains.anko.sdk27.coroutines.onClick
import org.jetbrains.anko.support.v4.find
import org.jetbrains.anko.wrapContent
 
class ImageCodeDialog : DialogFragment() {
    private val phone by lazy {
        arguments?.getString("phone")?:""
    }
 
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return inflater.inflate(R.layout.dialog_imag_code, container, false)
    }
 
    private val tv_cancel by lazy { find<ImageView>(R.id.tv_cancel) }
    private val et_code by lazy { find<EditText>(R.id.et_code) }
    private val tv_action by lazy { find<TextView>(R.id.tv_action) }
    private val iv_code by lazy { find<SimpleDraweeView>(R.id.iv_code) }
 
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setStyle(STYLE_NO_FRAME, R.style.FadeDialog)
    }
 
    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        dialog?.window?.setLayout(matchParent, wrapContent)
        dialog?.window?.setGravity(Gravity.CENTER)
        dialog?.setCanceledOnTouchOutside(true)
    }
 
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
 
        tv_cancel.setOnClickListener {
            dismiss()
        }
 
        refreshImgCode()
 
        iv_code.onClick {
            refreshImgCode()
        }
 
        tv_action.setOnClickListener {
            val code = et_code.text.toString()
            if (code.length!=4){
                myToast("请输入4位验证码")
            }else{
                callback?.onOk(code)
                dismiss()
            }
        }
    }
 
    private fun refreshImgCode(){
        val uri = Uri.parse(Apis.CODE_IMG.format(phone))
        val imagePipeline = Fresco.getImagePipeline()
        imagePipeline.evictFromMemoryCache(uri)
        imagePipeline.evictFromDiskCache(uri)
        imagePipeline.evictFromCache(uri)
        iv_code.setImageURI(uri)
    }
 
    interface Callback {
        fun onOk(code: String)
    }
 
    private var callback: Callback? = null
 
    fun setCallback(callback: Callback) {
        this.callback = callback
    }
}