KotlinStudy/Android/Demo1/MyDialog.kt
2022-05-23 19:48:49 +08:00

48 lines
1.9 KiB
Kotlin

import android.app.Activity
import android.app.Dialog
import android.graphics.Color
import android.os.Build
import android.view.Display
import android.view.Window
import android.view.WindowInsets
import android.view.WindowManager
class MyDialog(context: Activity) : Dialog(context) {
private val activityContext:Activity= context
private fun initView() {
//获取display
val display: Display = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
context.display!!
} else {
activityContext.windowManager.defaultDisplay
}
//Android R后设置全屏的方式变了
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.R) {
//全屏
window!!.insetsController?.hide(WindowInsets.Type.statusBars())
//保留状态栏
window!!.insetsController?.hide(WindowInsets.Type.navigationBars())
}else{
window!!.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN)
}
//设置LayoutParams
window!!.setLayout(WindowManager.LayoutParams.MATCH_PARENT,WindowManager.LayoutParams.MATCH_PARENT)
//设置attribute
val attributes = window?.attributes!!
attributes.flags=WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
window!!.attributes = attributes
//设置高宽及padding
window!!.decorView.minimumHeight=display.mode.physicalHeight
window!!.decorView.minimumWidth=display.mode.physicalWidth
//如果未设置背景颜色或设置在padding之后,则无法全屏,这里设置的透明底
window!!.decorView.setBackgroundColor(Color.parseColor("#10000000"))
window!!.decorView.setPadding(0,0,0,0)
}
override fun show() {
//在展示前设置参数
initView()
super.show()
}
}