To moje rozwiązanie:
Najpierw zdefiniuj wartości logiczne, które wskazują, czy pasek nawigacji jest widoczny, czy nie.
boolean navigationBarVisibility = true //because it's visible when activity is created
Druga metoda tworzenia, która ukrywa pasek nawigacji.
private void setNavigationBarVisibility(boolean visibility){
if(visibility){
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
navigationBarVisibility = false;
}
else
navigationBarVisibility = true;
}
Domyślnie, jeśli klikniesz na aktywność po ukryciu paska nawigacji, pasek nawigacji będzie widoczny. Więc mamy jego stan, jeśli jest widoczny, to ukryjemy.
Teraz ustaw OnClickListener na swój widok. Używam widoku powierzchni, więc dla mnie:
playerSurface.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setNavigationBarVisibility(navigationBarVisibility);
}
});
Musimy również wywołać tę metodę po uruchomieniu działania. Ponieważ chcemy to ukryć na początku.
setNavigationBarVisibility(navigationBarVisibility);