Android防止查看消耗事件
我正在尝试创建一个将用于记录所有MotionEvent
的视图。 这个视图是在一个Service()
,这是从应用程序链接到我需要记录的事件。
我的问题是,当这个视图在应用程序的顶部,根据需要,所有的事件都在这个视图中消耗。
有没有办法阻止这个视图消耗事件,并让View在后面消耗它?
这里是Service()
的代码
class GestureTrackViewService : Service(), View.OnTouchListener { var mWindowManager: WindowManager? = null var mDummyView: LinearLayout? = null override fun onBind(p0: Intent?): IBinder? { return null } override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { val params = WindowManager.LayoutParams( 1080, /* width */ 1920, /* height */ WindowManager.LayoutParams.TYPE_PHONE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL or WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, PixelFormat.TRANSPARENT) params.gravity = Gravity.START or Gravity.TOP mDummyView!!.isFocusable = false mDummyView!!.isClickable = false mWindowManager!!.addView(mDummyView, params) return super.onStartCommand(intent, flags, startId) } override fun onCreate() { mWindowManager = getSystemService(Context.WINDOW_SERVICE) as WindowManager mDummyView = LinearLayout(this) val params = WindowManager.LayoutParams(1, WindowManager.LayoutParams.MATCH_PARENT) mDummyView!!.layoutParams = params mDummyView!!.setOnTouchListener(this) super.onCreate() } override fun onTouch(p0: View, p1: MotionEvent): Boolean { Log.e("SERVICE", "X: ${p1.rawX} || Y: ${p1.rawY}") mDummyView!!.requestDisallowInterceptTouchEvent(false) return false }
}
我想实现的是不可能使用Service()
。
相反,我使用了一个自定义的根View并实现了dispatchTouchEvent()
这个响应的来源在这里: onInterceptTouchEvent只获取ACTION_DOWN
- Kotlin的Android扩展和变量
- 如何解决:“错误:无法找到符号类…”转换后的Java类Kotlin?
- AndroidStudio / Kotlin – 未解决的参考:ReadWriteProperty – Kotlin版本1.0.0-beta-1038
- Android分开/多个电话簿
- ClassMapper:aBooleanType没有设置者/字段
- Android / Kotlin崩溃在开始4.1.2 – ExceptionInInitializerError
- 应用程序在构建回栈时崩溃
- 尝试访问其他活动时应用程序崩溃
- 在Android Java / Kotlin中,是否实现了一个接口直接访问嵌套类的本地变量