kotlin 如何在Android手机上完全禁用回扫?

j13ufse2  于 2023-03-13  发布在  Kotlin
关注(0)|答案(2)|浏览(134)

手势是游戏中常见的操作,如果玩家从屏幕边缘向右滑动,屏幕将返回到上一屏幕,游戏将暂停(或结束)。
下面的代码可以停止返回,但是滑动手势首先会导致onTouchEvent(event: MotionEvent)被取消,并停止玩家想做的操作,这对玩家来说不是一个好的体验。
有没有更好的办法来禁用后退手势?

override fun onBackPressed() {
   // super.onBackPressed()
}
t9eec4r0

t9eec4r01#

可以检查用户是否在播放语句。
例如:

override fun onBackPressed() {
    if(!isPlaying){
        super.onBackPressed()
    }
}

等等。我希望,这对你有帮助:)

bnlyeluc

bnlyeluc2#

也许您可以使用setOnKeyListener监听所有硬件键。
对于此硬件,后退按钮等于KeyEvent.KEYCODE_BACK
所以代码可以像这个例子一样;

view.apply {
            isFocusableInTouchMode = true
            requestFocus()

            setOnKeyListener { v, keyCode, event ->
                if (keyCode == KeyEvent.KEYCODE_BACK) {
                    Toast.makeText(requireContext(), "Hardware Back Clicked!", Toast.LENGTH_SHORT).show()
                }
                true // If this is true then it will not send to onBackPressed() otherwise it will send
            }
        }

该点为返回值,如果为true则不调用onBackPressed(),否则调用onBackPressed()。
view等于片段.view或onViewCreated()参数的视图。
因此,您可以随时读取任何键按下这些功能,您可以发送返回值根据您的需要。

相关问题