package com.yidianling.common.view.popupwindow
import android.app.Activity
import android.view.Gravity
import android.view.MotionEvent
import android.view.View
import android.view.Window
import android.widget.PopupWindow
/**
* @author jiucheng
* @描述:PopupWindow基类,后续PopupWindow可统一继承
* @Copyright Copyright (c) 2018
* @Company 壹点灵
* @date 2018/8/9
*/
open class BasePopupWindow : View.OnTouchListener, PopupWindow.OnDismissListener {
protected var popupWindow: PopupWindow? = null
protected var mContext: Activity? = null
protected var mView: View? = null
protected var window: Window? = null
constructor(mContext: Activity) {
this.mContext = mContext
popupWindow = PopupWindow(mContext)
window = mContext.window
}
open fun initPopupwindow() {
//设置点击空白处消失
popupWindow!!.isTouchable = true
popupWindow!!.setTouchInterceptor(this)
popupWindow!!.isOutsideTouchable = true
popupWindow!!.isFocusable = true
popupWindow!!.setOnDismissListener(this)
}
override fun onDismiss() {
val params = window!!.getAttributes()
params.alpha = 1f
window!!.setAttributes(params)
}
override fun onTouch(v: View?, event: MotionEvent?): Boolean {
if (event != null) {
if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
dismiss()
return true
}
}
return false
}
open fun dismiss() {
if (popupWindow != null)
popupWindow!!.dismiss()
val params = window!!.attributes
params.alpha = 1f
window!!.attributes = params
}
open fun showAtLocation(parent: View, gravity: Int, x: Int, y: Int) {
val params = window!!.attributes
params.alpha = 0.5f
window!!.attributes = params
if (popupWindow != null) {
popupWindow!!.showAtLocation(parent, gravity, x, y)
}
}
open fun showAsDropDown(anchor: View, xoff: Int, yoff: Int) {
val params = window!!.attributes
params.alpha = 0.5f
window!!.attributes = params
if (popupWindow != null) {
popupWindow!!.showAsDropDown(anchor, xoff, yoff)
}
}
/**
* 在底部显示
*/
open fun showBottom(v: View) {
showAtLocation(v, Gravity.BOTTOM, 0, 0)
}
}