2012-03-30 8 views
1

Gibt es einen Weg in ICS oder Honeycomb, um vollständig im Vollbildmodus zu gehen? Ich möchte, dass die Systembenutzeroberfläche komplett weg ist! Zur Zeit, was ich tue, ist:Android - Waben oder ICS gehen Vollbildmodus

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

    setContentView(R.layout.main); 
    getWindow().getDecorView().setSystemUiVisibility(View.STATUS_BAR_HIDDEN); 

Aber dies führt in der Statusleiste durch wirklich dim Punkte ersetzt werden! Ich will es komplett weg! Sagen wir zum Beispiel, ich möchte ein Video abspielen oder ein Bild zeigen, das den ganzen Bildschirm einnimmt. Ich bin damit einverstanden, dass die Statusleiste auf Benutzerinteraktion zurückkommt, aber ich brauche sie vollständig, wenn keine Benutzerinteraktion stattfindet.

Mit dem obigen Code. Ich erhalte die folgende aussehen:

Status bar hidden replaced by dim dots

möchte ich die dim Punkte, wie gut und mein Video/Bild gegangen vollständig vollem Umfang nutzen zu können.

+0

Ähnlich http://stackoverflow.com/questions/8469112/hide-ics-back-home-task-switcher-buttons/8481777#8481777 zumindest für ICS – NKijak

Antwort

1

Wie das vorherige Poster vorgeschlagen, das ist völlig unmöglich, ohne Ihr Gerät zu verwurzeln und einige etwas schmutzige Prozess Kill-Operationen. Der Grund dafür ist, dass neue Hardware (wie zum Beispiel ein Tablet) möglicherweise keine Hardwaretasten für die Navigation hat - und somit würde der Benutzer durch das Verbergen dieser Knöpfe keine Möglichkeit haben, Dinge zu tun, von denen sie garantieren können, dass sie in der Lage sind, dies zu tun , wie zum Startbildschirm gehen oder auf Geräteinformationen zugreifen. Ob Sie dieser Argumentation zustimmen oder nicht, ist die API.

+0

Nun, für meine Zwecke bin ich mit der Rooting-Option einverstanden, wissen Sie, wie man den Dienst auf einem gerooteten Gerät killt? – Ali

+0

Sicher ... es gibt einen Blog-Post darüber, zumindest für Waben, aber ich bezweifle, dass sie es für ICS http://android.serverbox.ch/?p=306 geflickt hätten – JRaymond

1

Die letzte Information, die ich habe, ist, dass Sie das schwarze Klebeband verwenden können, um es zu bedecken. Das ist der Vorschlag von Chet Haase. Watch this google IO 2011 session Q&A ab 53 Minuten

+0

Nun, Ich habe es geschafft, den 'System UI' Service manuell zu stoppen. Die Frage, die jetzt gestellt wird, ist, dass ich diesen Dienst durch meinen Code stoppen kann. Anscheinend heißt die Klasse 'StatusBarService', ist aber für uns nicht sichtbar. – Ali

+0

Wenn Sie das gesamte Framework neu kompilieren, nachdem Sie es an Ihre Bedürfnisse angepasst haben ... –

3

Dies ist in Honeycomb nicht möglich, wurde jedoch in API v14 hinzugefügt. Verwendung:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); 

anzeigen ausführlichere Antworten hier über (obwohl ich eine Build.Version.SDK_INT Prüfung statt der vorgeschlagenen Reflexionsbasierte Prüfung für die Unterstützung verwenden würde):

Hide ICS back home task switcher buttons

0

Sie wollen SYSTEM_UI_FLAG_HIDE_NAVIGATION. Denken Sie daran, dass die Soft-Navigationstasten nur für die Geräteerfahrung wichtig sind und die Tasten nur so lange ausgeblendet werden, bis eine Benutzerinteraktion stattfindet. Wenn Sie sie dauerhaft verstecken möchten, dann ist das Rooten des Geräts (wie andere vorgeschlagen haben) der einzige Weg zu gehen.

Die Flagge wurde hinzugefügt vom Ice Cream Sandwich, API 14. Vor 14 wurde eine Flagge STATUS_BAR_HIDDEN in Honeycomb, API 11 hinzugefügt, die eine ähnliche Funktion hatte. Zuvor waren die Softnavigationstasten nicht vorhanden, so dass Vollbildmodi vollständig von Themes (speziell Theme.NoTitleBar.Fullscreen) behandelt wurden.

Verwendung:

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) 
    mBaseLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); 
else if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) 
    mBaseLayout.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);