2016-07-12 1 views
1

Je veux masquer et montrer la touche programmable (accueil, retour, menu) comme youtube, lorsque la vidéo est en mode plein écran. J'utilise le code ci-dessous.Android: masquer en douceur les touches programmables

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 
           | View.SYSTEM_UI_FLAG_FULLSCREEN 
           | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); 

Mais il est pas comme youtube, il troublent la vue sur l'ensemble cache et l'affichage.

Je sais, il me manque quelque chose. Mais je ne sais pas ce que je suis absent ...

Répondre

0

Essayez ceci,

void enableImmersiveMode() { 

    ((FrameLayout) mToolbar.getParent()).setFitsSystemWindows(false); 

    // True immersive mode is available only for android API 19 and above, 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
     mDecorView.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); 

    } 

MISE À JOUR: La désactivation du mode immersif devrait être comme ça,

private void disableImmersiveMode() { 

    ((FrameLayout) mToolbar.getParent()).setFitsSystemWindows(true); 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
     mDecorView.setSystemUiVisibility(
       View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
         | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
         | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 
    } 

De cette façon, vous devriez voir le jerk un seul premier appel de enableImmersiveMode().

+0

même situation crée ... secouant vue sur l'ensemble cache show .. –

+0

@FaisalAhsan Pls vérifier ma mise à jour ci-dessus. Dites-moi quel est le comportement maintenant. – Tony

0

Tout ce que vous voulez est le mode Immersive. Essayez le code ci-dessous dans votre activité.

@Override 
    public void onWindowFocusChanged(boolean hasFocus) { 
     super.onWindowFocusChanged(hasFocus); 
     if (hasFocus) { 
      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 
          | View.SYSTEM_UI_FLAG_FULLSCREEN 
          | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); 
     } 
    }