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) } }