我已经用Java开发了适用于Android的游戏引擎,它旨在创建二维平台游戏。响应于用户在屏幕的左右边界垂直延伸的两个不可见的“带”之一中,用户触摸并握住手指,主角色向左或向右移动。该游戏可以在纵向和横向视图下工作,并且不可见带的位置也会相应更新。
初始化期间,我对SurfaceView对象执行以下操作:
// Set the content to appear full screen, and to allow the navigation bars
// to be pulled up from offscreen with a swipe action at the screen's edge.
a_GameView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
| View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
);
在肖像模式下,它像梦一样发挥。在横向视图中播放时会出现问题。假设我已将手机顺时针旋转90度-现在,以前在屏幕顶部的位置是我的右手边的区域,而过去在屏幕底部的位置是我的左手边的位置。角色向左移动的时间约为99%,但是如果您将手指按在一个最佳位置(如果我的应用程序没有隐藏它,则恰好是主页按钮所在的位置),您会收到不希望的反应。手机非常轻微地振动一次,该应用程序继续运行,但是一旦松开,就会产生第二声轻微振动,并且该应用程序最小化,从而使您回到主屏幕。
这似乎与点击主页按钮并不相同,因为这仅在您按住时才会发生。不能通过快速点击最有效点来引起。
我的问题是:任何人都可以向我解释Android OS的哪种机制控制这种反应,并且我有可能禁用just that机制吗?
显然,我希望用户能够随时退出该应用程序,但我要强制他们必须向上滑动才能“拉起”导航栏才能退出。我不希望存在这个可触及的最佳位置,因为我不希望用户在尝试移动其角色时不小心将游戏最小化。
非常感谢任何见识,谢谢!
编辑:自发布以来,我已经确认在LG G5上不会发生这种情况。这仅发生在我一直用于开发的Samsung Galaxy S8 +上,因此它似乎对于特定的Android风格而言是唯一的。
经过更多研究,我终于找到了答案。神秘的甜蜜点是三星Galaxy S8 +中“硬按主屏幕按钮”功能的结果。可以在以下位置禁用它:设置->显示->导航栏。