11

我正在为 OUYA 和 Android 编写游戏,并且正在使用 OUYA 控制器上的触控板。当你触摸它时,鼠标指针会出现,我找不到隐藏它的方法。我认为这对于 Android 上网本上的游戏也是一个问题。

有没有人找到一种与光标交互而不仅仅是监听事件的方法?

4

3 回答 3

7

这不会隐藏鼠标,但它至少有助于防止触摸事件干扰您的操纵杆处理代码——我知道这不是一个合适的解决方案,但仍然可以帮助登陆此页面的人:

public boolean onGenericMotionEvent(MotionEvent event) {
    if ( (event.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) {
        //handle the event
        return true;
    }
    else {
        return false;
    }
}
于 2013-02-04T16:11:25.513 回答
3

Android 目前不公开任何隐藏鼠标光标的功能。每当您有外部指点设备(即 USB/蓝牙鼠标、触控板等)时,只要您与设备交互,屏幕上就会出现鼠标指针。

不幸的是(从 JB 4.2.2 开始)这意味着没有修改过的 ROM 是不可能的。

于 2013-03-21T05:31:05.040 回答
0

现在可以请求捕获指针。您需要明确请求捕获:

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()
}

我知道这个问题的上下文可能总体上不适用(即:欧亚开发),但这是我自己研究如何做到这一点时的第一个搜索结果。所以我想我会更新答案!

于 2021-10-06T17:46:02.440 回答