package com.dollearn.student.dialog
|
|
import android.os.Bundle
|
import android.os.CountDownTimer
|
import android.view.Gravity
|
import android.view.LayoutInflater
|
import android.view.View
|
import android.view.ViewGroup
|
import android.view.inputmethod.InputMethodManager
|
import android.widget.EditText
|
import androidx.appcompat.app.AppCompatActivity
|
import androidx.core.content.ContextCompat.getSystemService
|
import androidx.fragment.app.DialogFragment
|
import cn.sinata.xldutils.R
|
import cn.sinata.xldutils.utils.SPUtils
|
import org.jetbrains.anko.matchParent
|
import org.jetbrains.anko.wrapContent
|
|
abstract class BaseDialogFragment : DialogFragment() {
|
abstract fun setContentView(): Int
|
abstract fun setGravity(): Int
|
abstract fun initView()
|
|
var isFirstResume = true
|
var canceledOnTouchOutside = true
|
|
var mCancelable = true
|
|
override fun onCreateView(
|
inflater: LayoutInflater,
|
container: ViewGroup?,
|
savedInstanceState: Bundle?
|
): View? {
|
return inflater.inflate(setContentView(), container, false)
|
}
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
super.onCreate(savedInstanceState)
|
setStyle(
|
STYLE_NO_FRAME,
|
if (setGravity() == Gravity.CENTER) R.style.FadeDialog else R.style.Dialog
|
)
|
}
|
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
super.onActivityCreated(savedInstanceState)
|
dialog?.window?.setLayout(matchParent, wrapContent)
|
dialog?.window?.setGravity(setGravity())
|
dialog?.setCanceledOnTouchOutside(canceledOnTouchOutside)
|
isCancelable = mCancelable
|
}
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
super.onViewCreated(view, savedInstanceState)
|
initView()
|
}
|
|
/**
|
* 显示键盘
|
*
|
* @param et 输入焦点
|
*/
|
fun showInput(et: EditText) {
|
et.postDelayed({
|
et.requestFocus()
|
val imm =
|
requireContext().getSystemService(AppCompatActivity.INPUT_METHOD_SERVICE) as InputMethodManager
|
imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT)
|
}, 200)
|
}
|
|
override fun onStop() {
|
super.onStop()
|
dialog?.window?.setWindowAnimations(0) //阻止二次动画
|
}
|
|
override fun onResume() {
|
super.onResume()
|
if (isFirstResume)
|
isFirstResume = false
|
else
|
object : CountDownTimer(500, 500) {
|
override fun onTick(millisUntilFinished: Long) {
|
}
|
|
override fun onFinish() {
|
dialog?.window?.setWindowAnimations(if (setGravity() == Gravity.CENTER) R.style.FadeDialog else R.style.Dialog)
|
}
|
}.start()
|
}
|
}
|