我正在为 OUYA 和 Android 编写游戏,并且正在使用 OUYA 控制器上的触控板。当你触摸它时,鼠标指针会出现,我找不到隐藏它的方法。我认为这对于 Android 上网本上的游戏也是一个问题。
有没有人找到一种与光标交互而不仅仅是监听事件的方法?
我正在为 OUYA 和 Android 编写游戏,并且正在使用 OUYA 控制器上的触控板。当你触摸它时,鼠标指针会出现,我找不到隐藏它的方法。我认为这对于 Android 上网本上的游戏也是一个问题。
有没有人找到一种与光标交互而不仅仅是监听事件的方法?
这不会隐藏鼠标,但它至少有助于防止触摸事件干扰您的操纵杆处理代码——我知道这不是一个合适的解决方案,但仍然可以帮助登陆此页面的人:
public boolean onGenericMotionEvent(MotionEvent event) {
if ( (event.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) {
//handle the event
return true;
}
else {
return false;
}
}
Android 目前不公开任何隐藏鼠标光标的功能。每当您有外部指点设备(即 USB/蓝牙鼠标、触控板等)时,只要您与设备交互,屏幕上就会出现鼠标指针。
不幸的是(从 JB 4.2.2 开始)这意味着没有修改过的 ROM 是不可能的。
现在可以请求捕获指针。您需要明确请求捕获:
fun onClick(view: View) {
view.requestPointerCapture()
}
如文件所述:
Android 通常从鼠标以外的源传递指针事件,但鼠标指针不再可见。
您可以通过覆盖来处理指针事件onCapturedPointerEvent
:
override fun onCapturedPointerEvent(motionEvent: MotionEvent): Boolean {
// Get the coordinates required by your app
val verticalOffset: Float = motionEvent.y
// Use the coordinates to update your view and return true if the event was
// successfully processed
return true
}
或注册一个事件处理程序OnCapturedPointerListener
:
myView.setOnCapturedPointerListener { view, motionEvent ->
// Get the coordinates required by your app
val horizontalOffset: Float = motionEvent.x
// Use the coordinates to update your view and return true if the event was
// successfully processed
true
}
完成后释放指针由您决定:
override fun onClick(view: View) {
view.releasePointerCapture()
}
我知道这个问题的上下文可能总体上不适用(即:欧亚开发),但这是我自己研究如何做到这一点时的第一个搜索结果。所以我想我会更新答案!