import android.app.Dialog
import android.content.Context
import android.os.Bundle
import android.support.annotation.StyleRes
import android.view.Gravity
import android.view.Window
import android.view.WindowManager
/**
* @author TiT on 2019-09-09 09:09
* dialog 基类
*/
abstract class BaseDialog constructor(
context: Context,
cancelable: Boolean = true,
canceledOnTouchOutside: Boolean = true,
@StyleRes themeResId: Int = R.style.BottomNoShadeDialog,
@StyleRes animationsResId: Int = R.style.DialogBottomSlideInOutAnim,
gravity: Int = Gravity.CENTER,
width: Int = WindowManager.LayoutParams.WRAP_CONTENT,
height: Int = WindowManager.LayoutParams.WRAP_CONTENT
) : Dialog(context, themeResId) {
init {
val window = this.window
window!!.requestFeature(Window.FEATURE_NO_TITLE)
setContentView(getLayoutId())
window.setGravity(gravity)
window.setBackgroundDrawableResource(android.R.color.transparent)
val params = window.attributes
params.width = width
params.height = height
window.attributes = params
window.setWindowAnimations(animationsResId)
setCancelable(cancelable)
setCanceledOnTouchOutside(canceledOnTouchOutside)
}
abstract fun initView()
abstract fun getLayoutId(): Int
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
initView()
}
}
///////////////////////////////////////////////////////////////////////////
//
// style
//
// <!-- 不带有遮罩层的 Dialog 效果 -->
// <style name="BottomNoShadeDialog">
// <!--<item name="android:windowBackground">@android:color/transparent</item>-->
// <!--<item name="android:windowFrame">@null</item>-->
// <!--<item name="android:windowNoTitle">true</item>-->
// <item name="android:windowIsFloating">true</item>
// <!--<item name="android:windowIsTranslucent">true</item>-->
// <!--<item name="android:windowContentOverlay">@null</item>-->
// <!-- Dialog show、dismiss 的动画 -->
// <!-- <item name="android:windowAnimationStyle">@style/DialogBottomSlideInOutAnim</item> -->
// <!-- 设置是否显示遮罩层 -->
// <item name="android:backgroundDimEnabled">false</item>
// </style>
//
// <!-- 带有遮罩层的Dialog效果 -->
// <style name="BottomShadeDialog" parent="@style/BottomNoShadeDialog">
// <!-- 设置是否显示遮罩层 -->
// <item name="android:backgroundDimEnabled">true</item>
// <!-- 设置遮罩层的灰度值 -->
// <item name="android:backgroundDimAmount">0.5</item>
// </style>
//
// <!-- 底部滑入滑出 动画-->
// <style name="DialogBottomSlideInOutAnim" mce_bogus="1" parent="android:Animation">
// <item name="android:windowEnterAnimation">@anim/dialog_bottom_slide_in</item>
// <item name="android:windowExitAnimation">@anim/dialog_bottom_slide_out</item>
// </style>
//
// <!-- 淡入淡出 动画 -->
// <style name="DialogFadeInOutAnim" mce_bogus="1" parent="android:Animation">
// <item name="android:windowEnterAnimation">@anim/fade_in</item>
// <item name="android:windowExitAnimation">@anim/fade_out</item>
// </style>
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
//
// anim
//
//<set xmlns:android="http://schemas.android.com/apk/res/android">
// <translate
// android:duration="300"
// android:fromYDelta="100%p"
// android:toYDelta="0" />
//</set>
//
//<?xml version="1.0" encoding="utf-8"?>
//<set xmlns:android="http://schemas.android.com/apk/res/android">
// <translate
// android:duration="300"
// android:fromYDelta="0"
// android:toYDelta="100%p" />
//</set>
//
//<?xml version="1.0" encoding="utf-8"?>
//<set xmlns:android="http://schemas.android.com/apk/res/android">
// <alpha
// android:duration="300"
// android:fromAlpha="0.1"
// android:interpolator="@android:anim/decelerate_interpolator"
// android:toAlpha="1.0" />
//</set>
//
//<?xml version="1.0" encoding="utf-8"?>
//<set xmlns:android="http://schemas.android.com/apk/res/android">
// <alpha
// android:duration="300"
// android:fromAlpha="1.0"
// android:interpolator="@android:anim/decelerate_interpolator"
// android:toAlpha="0.1" />
//</set>
///////////////////////////////////////////////////////////////////////////