2013-08-14 8 views
15

Mam aplikację w wersji 3.0.0. Moja aplikacja obejmuje pasek stanu (rzecz z zegarem, informacjami o odbiorze itp.). Ponieważ nie jestem pełnoekranową grą, nie jest to pożądane.Pokaż pasek stanu w Androidzie w aplikacji PhoneGap (tj. Uniemożliwić pełny ekran)

Uważam, że działa jako aplikacja "Pełny ekran".

Znalazłem posty na stosie, aby zrobić coś przeciwnego (np. Zrobić aplikację na pełnym ekranie) i zrobiłem odwrotność tego, co zasugerowano. Zastanawiam się, czy coś zmieniło się w PhoneGap, czy może w CLI PhoneGap, którego użyłem do stworzenia projektu, ponieważ moja aplikacja wyświetla się na pełnym ekranie.

Próbowałem to:

public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     super.setIntegerProperty("splashscreen", R.drawable.splash); 

     getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); 

     super.loadUrl(Config.getStartUrl(), 10000); 
    } 

który wyraźnie informuje go, aby nie być w trybie pełnoekranowym .... ale to wciąż pojawia się na pełnym ekranie.

Odpowiedz

19

I zdobione.

Wtyczka Splashscreen musi być ustawiona na pełny ekran. Wywołując metodę clearFlags PO super.loadUrl, po załadowaniu aplikacji pojawia się pasek stanu.

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    super.setIntegerProperty("splashscreen", R.drawable.splash); 
    super.loadUrl(Config.getStartUrl(), 10000); 

    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
} 
+5

miło, próbowałem ustawić tę dokładną konfigurację, didn nie zdaje sobie sprawy, że w rzeczywistości jest to ekran powitalny zakłócający status: – benka

+2

Splashscreen! Ukryty winowajca. To naprawdę powinno być udokumentowane –

1
// Hide status bar 
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
// Show status bar 
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 

Domyślnym zachowaniem NIE JEST tryb pełnoekranowy, czy zmodyfikowałeś swój motyw w formacie xml?

Jakiś inny kod znalazłem, tylko w przypadku:

private void toggleFullscreen(boolean fullscreen) 
{ 
    WindowManager.LayoutParams attrs = getWindow().getAttributes(); 
    if (fullscreen) 
    { 
     attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; 
    } 
    else 
    { 
     attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN; 
    } 
    getWindow().setAttributes(attrs); 
} 
+0

+1 za potwierdzenie NIE NALEŻY domyślnie oglądać na pełnym ekranie. Nie zmodyfikowałem żadnego pliku xml. To wszystko, co wygenerował dla mnie phonegap cli. Zdałem sobie sprawę, że musi to być spowodowane wtyczką z plusem, dzięki twojemu postowi. Zobacz moją odpowiedź. – blak3r

+0

Po prostu, aby Cię powiadomić: http://cyrilmottier.com/2012/05/03/splash-screens-are-evil-dont-use-them/ –

39

kod natywny zasugerowano powyżej będzie działać, ale czystszy sposób byłoby po prostu upewnić ty nie mieć w config.xml:

<preference name="fullscreen" value="true" /> 

Można również ustawić go na "false", ale jest to wartość domyślna, więc nie jest to konieczne. pracuje dla mnie.

+0

Czy jest to tylko preferencja dla Androida? Czy zrobiłoby to coś dziwnego w aplikacji ios? Edytowałem tylko kod natywny jako ostatnią deskę ratunku, więc jeśli to działa, musiało to być nieudokumentowane w momencie, kiedy je pisałem. – blak3r

+1

Testowałem to tylko dla Androida. jest udokumentowane dla "budowy phonegap" w dowolny sposób: https://build.phonegap.com/docs/config-xml –

+0

Powinieneś przetestować go na iOS i zgłosić tutaj :) –

2

dokonać tej zmiany w res/xml/config.xml na eclipse.

<preference 
    name="fullscreen" 
    value="false" />