我正在尝试制作游戏,并希望防止用户意外从顶部滑动菜单栏以及在三星设备上侧面板滑动。
我发现了沉浸式模式: https://developer.android.com/training/system-ui/immersive
并且看来使用SYSTEM_UI_FLAG_IMMERSIVE_STICKY
应该可以防止用户通过滑动意外触发ui菜单。我一直无法在游戏中使用它,因此我创建了一个新应用并将其添加。它所做的只是使应用全屏显示,并且不会阻止用户下拉顶部/侧面菜单,也不会隐藏诸如Facebook聊天气泡之类的内容。这是SYSTEM_UI_FLAG_IMMERSIVE_STICKY无法涵盖的东西吗?似乎在android页面上明确指出了要为此设计的内容。
这是我用来测试的代码:
public class MainActivity extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.on_button).setOnClickListener(this);
findViewById(R.id.off_button).setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId()==R.id.on_button) {
getWindow().getDecorView().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);
} else {
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
}
}