SystemBarTint
SystemBarTint copied to clipboard
Fix system bars being displayed when using immersive mode on many custom ROMs
BUG still exist in your codes :( And I don't know how to solve this, it's a custom ROM.

First I call showNavigationBar().
private void showNavigationBar() {
// set navigation bar status, remember to disable "setNavigationBarTintEnabled"
final int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
// This work only for android 4.4+
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
getWindow().getDecorView().setSystemUiVisibility(flags);
// Code below is to handle presses of Volume up or Volume down.
// Without this, after pressing volume buttons, the navigation bar will
// show up and won't hide
final View decorView = getWindow().getDecorView();
decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
if((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
decorView.setSystemUiVisibility(flags);
}
}
});
}
}
Then, I call these functions.
tintManager = new SystemBarTintManager(this);
// enable all tint
tintManager.setStatusBarTintEnabled(true);
tintManager.setNavigationBarTintEnabled(true);
tintManager.setTintAlpha(0.0f);
// set all color
tintManager.setTintColor(getResources().getColor(android.R.color.black));
tintManager.setStatusBarAlpha(0.90f);
tintManager.setNavigationBarAlpha(0.80f); // TODO: fix bug