puzhibing
2026-08-21 5fa94b3718b4a78a4fcea4c97652b0ef20b7de3a
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
package com.xw.common
 
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.util.DisplayMetrics
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.Window
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.FragmentManager
import com.jidogoon.pdfrendererview.PdfRendererView
import com.jidogoon.pdfrendererview.PdfRendererView.StatusCallBack
import java.io.File
 
class PdfViewDialog : DialogFragment() {
    lateinit var window: Window
    lateinit var mView: View
    lateinit var pdfreader: PdfRendererView
 
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setStyle(STYLE_NO_TITLE, R.style.MatchWidthDialog)
    }
 
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        window = dialog!!.window!!
        val lp = window.attributes
        lp.gravity = Gravity.BOTTOM // 紧贴底部
        //设置dialog的 进出 动画
        window.setWindowAnimations(R.style.AnimUp)
        mView = inflater.inflate(R.layout.dialog_show_pdf, null)
        pdfreader = mView.findViewById(R.id.pdfreader)
        if(pdfFile != null){
            pdfreader.initWithFile(pdfFile!!)
        }else if(!pdfUrl.isNullOrEmpty()){
            pdfreader.initWithUrl(pdfUrl!!)
            pdfreader.statusListener = statusListener
        }
        return mView
    }
 
    override fun onStart() {
        super.onStart()
        dialog?.window?.let {
            // 设置窗口动画(如果需要)
            it.setWindowAnimations(R.style.AnimUp)
            val lp = it.attributes
            lp.gravity = Gravity.BOTTOM // 紧贴底部
            // 设置背景(如果需要)
            it.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
            val dm = DisplayMetrics()
            activity?.windowManager?.defaultDisplay?.getMetrics(dm)
            it.setLayout(dm.widthPixels, dm.heightPixels)
        }
    }
 
    var pdfFile: File? = null
    var pdfUrl: String? = null
    var statusListener: StatusCallBack? = null
    fun show(manager: FragmentManager, tag: String?, pdfFile: File? = null, url: String? = null, statusListener: StatusCallBack? = null) {
        this.pdfFile = pdfFile
        this.pdfUrl = url
        this.statusListener = statusListener
        super.show(manager, tag)
    }
}