2015-10-11 23 views
12

Sto facendo un gioco semplice e finora ho utilizzato l'attività vuota. Ora voglio che copra l'intero schermo, avrò bisogno di ricodificare l'intera cosa usando un'attività FullScreen? Ho provato a cercare qualcosa online ma ogni cosa mi sono imbattuto avevo l'aggiunta di questo bit: ​Utilizzo dello schermo intero Attività

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

che causa l'applicazione per bloccarsi non appena viene lanciato su un dispositivo. Quindi per favore se qualcuno può mostrarmi il mio errore.

Ecco un link per l'uscita logcat così come il codice del gioco

Logcat and game code

+0

Mostraci il tuo logcat e ti mostreremo l'errore. –

+0

Aggiunto il logcat –

+0

Aggiungilo alla tua domanda. –

risposta

30

Provate a impostare l'attività a tutto schermo:

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); 

È possibile inserire questo codice in onCreate() metodo

+0

In sostanza Questo non funzionava per prima perché avevo impostato l'SDK di destinazione su Froyo.Una volta che l'ho cambiato in KitKat, questo ha funzionato come un fascino –

+0

@Michele Lacorte Sto vivendo una barra di colore bianco quando il mio pannello di navigazione si spegne in Android L? –

+1

Penso che la soluzione @ t-kashima xml qui sotto nelle risposte sia abbastanza bella. Controlla. Non è necessario duplicare il codice di queste risposte accettate ovunque se si dispone di uno stile che definisce a schermo intero. –

0

Puoi semplicemente andare al file manifest e aggiungere android:theme="@android:style/Theme.NoTitleBar.Fullscreen" al tuo <activity /> o <application /> tag nel file Manifest a seconda delle esigenze.

+0

Anche quello, non funziona. –

24

Si può provare il seguente codice.

style.xml:

<style name="AppTheme.NoTitle" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="android:windowNoTitle">true</item> 
    <item name="windowActionBar">false</item> 
    <item name="android:windowFullscreen">true</item> 
    <item name="android:windowContentOverlay">@null</item> 
</style> 

AndroidManifest.xml:

<activity 
    android:name=".FullScreenActivity" 
    android:theme="@style/AppTheme.NoTitle" 
    android:screenOrientation="portrait" 
    android:launchMode="singleTop"> 
</activity> 
+2

la migliore soluzione è qui penso che avrebbe avuto più upvotes. – hcknl

+0

In suvated, ma non funziona bene. Testato e mostra i pulsanti soft quando riprende l'attività. – RominaV

2

quello che si voleva si chiama modalità Imersive, che funziona su Android 4.4 e Sopra

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); 

Documentazione ufficiale può essere trovato here

2

In AndroidManifest.xml file di

<activity 
     android:name=".Launch" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > <!-- This line is important --> 

<intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 

e la classe dovrebbe estende attività non AppCompatActivity ...

4

Nessuna delle risposte sopra funziona correttamente; hanno problemi con il metodo onResume() e finiscono per mostrare i tasti virtuali.

Il modo corretto per farlo è piuttosto semplice. Override di questo metodo nel Activity che dovrebbe essere fullscreen:

@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); 
    } 
} 

che, se si vuole "Sticky Immersion". Controlla il documento completo here e decidi cosa è meglio per il tuo caso d'uso.

+1

Grazie! Questa dovrebbe essere la risposta accettata. L'ho avuto in 'onResume()' come suggeriscono così tante risposte di overflow dello stack, e ha funzionato il 99% delle volte, rendendo difficile il debug. Mi hai salvato il dovere di eseguire questo codice ogni pochi secondi come soluzione. – user1516661

+0

@ user1516661 All'inizio ero confuso da tutti che dicevano di metterlo anche sul metodo 'onResume()' :) – RominaV