//Kotlin语法
class TestActivity:Activity(){ private var touchEvent: MotionEvent? = null override fun dispatchTouchEvent(event: MotionEvent?): Boolean { if (event?.action == MotionEvent.ACTION_DOWN) { //重点1:重写Activity的dispatchTouchEvent方法,保存一下按下的event。 touchEvent = event } return super.dispatchTouchEvent(event) } private fun showPopupWindow() { //重点2,将PopupWindow显示在window的decorView下,位置为按下的event的rawX和rawY的值。 popupWindow.showAsDropDown(window.decorView, touchEvent?.rawX?.toInt() ?: 0, touchEvent?.rawY?.toInt() ?: 0) } }