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