override fun onTouchEvent(event: MotionEvent): Boolean {
when (event.action) {
MotionEvent.ACTION_DOWN -> {
if (isOutOfBounds(event))
mStartY = event.y
}
MotionEvent.ACTION_UP -> {
if (mStartY > 0) {
val moveY = event.y
if (mStartY - moveY >= hasViewHalfHeight(mHeight)) {//滑动超过控件的一半认定为滑动事件
dismiss()
} else if (mStartY == moveY && isOutOfBounds(event)) {//认定为点击事件
mListener?.onClick()
dismiss()
}
}
}
}
return false
}
/**
* 是否有控件一半的高度
* 没有就默认40
*/
private fun hasViewHalfHeight(height: Int?): Int = if (null == height) 40 else (height / 2)
改为滑动距离超过控件一半高度,并且是上划就认定为滑动事件
Android全局通知弹窗的实现方法从手机顶部划入,短暂停留后,再从顶部划出。首先需要明确的是:1、这个弹窗的弹出逻辑不一定是当前界面编写的,比如用户上传文件,用户可能继续浏览其他页面的内容,但是监听文件是否上...