2015-04-18 20 views
5

Seguendo le esercitazioni in questa pagina (scritte nel 2009) non funzionano più. http://www.androidsnippets.com/how-to-make-an-activity-fullscreenForza Android libgdx in modalità immersiva

public class FullScreen extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
           WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     setContentView(R.layout.main); 
    } 
} 

Similmente, cercando di cambiare il tema in android.xml non ha alcun effetto: android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

Ecco uno screenshot: enter image description here

Dopo aver setacciato il web per un paio d'ore, i cant trova tutti gli articoli che possono aiutarmi. Quindi, come, nella versione 1.5.4 di libgdx, posso ottenere un immersive full screen?

---- ---- EDIT Ecco il codice ora completamente funzionante:

public class AndroidLauncher extends AndroidApplication { 
    @Override 
    protected void onCreate (Bundle savedInstanceState) { 
     hideSystemUi(); 

     super.onCreate(savedInstanceState); 
     AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); 
     config.hideStatusBar=true; 
     config.useImmersiveMode=true; 
     initialize(new game(), config); 
    } 


    private void hideSystemUi() { 
     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); 
    } 
} 

risposta

3

Prova questa nell'attività Android:

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 
    if (hasFocus) { 
     getWindow().getDecorView().setSystemUiVisibility(
      View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | 
      View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | 
      View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | 
      View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); 
    } 
} 

Nota che questa sarà solo lavoro al livello API 19 o superiore.

+0

non esiste una categoria di attività. Questo è il motivo per cui il primo non ha funzionato –

+0

Sì, c'è: https://github.com/anubiann00b/TileArena/blob/master/android/src/game/tile/arena/android/AndroidLauncher.java Il programma di avvio si estende 'Applicazione' che estende' Attività'. –

+0

ancora niente: http://jsfiddle.net/85e9hqve/ –

0

Purtroppo non posso commentare a causa della mia reputazione corrente, però ho trovato che l'aggiunta di:

config.hideStatusBar = true; 
config.useImmersiveMode = true; 

nella classe AndroidLauncher è sufficiente a dimostrare l'applicazione in immersiva tuttavia l'applicazione avrà inizio in serie modalità e quindi aggiornare alla modalità immersiva, maggiori informazioni sulla modalità immersiva Android:

Quando si utilizza il flag SYSTEM_UI_FLAG_IMMERSIVE_STICKY, un colpo verso l'interno nel sistema bars settori fa sì che le barre di apparire momentaneamente in uno stato di semi-trasparente, ma nessuna bandiera è c leared, e la visibilità dell'interfaccia utente del tuo sistema cambia gli ascoltatori non vengono attivati. Le barre si nascondono automaticamente dopo un breve ritardo o se l'utente interagisce con il centro dello schermo.

Android sdk page
Quindi la mia conclusione sarebbe che config.useImmersiveMode utilizzano la bandiera appiccicoso.

Su un lato nota, @TargetApi (Build.VERSION_CODES.HONEYCOMB) deve essere aggiunto al metodo OnWindowFocusChanged quando si mira un lvl api meno di 11

Problemi correlati