web-dev-qa-db-de.com

vollbildanwendung Android

ich habe zwei Fragen:

  1. wie kann ich meine Anwendung im Vollbildmodus ausführen?
  2. wie Videoplayer Videos im Vollbildmodus ausführen.

ich habe viel versucht und habe immer noch Probleme damit, aber ich konnte keine Lösung finden.

die Liste der Lösungen, die ich gefunden habe, aber sie erfüllen meine Anforderungen nicht

  • dadurch wird nur die Benachrichtigungsleiste ausgeblendet.

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    

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

  • verbirgt auch nur die Benachrichtigungsleiste

    Android:label="@string/app_name"
    Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen">
    
  • es zeigt die Navigationsleiste an, ohne sie zu verstecken.

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

  • keine Auswirkung auf meine Aktivität.

    anyView.setSystemUiVisibility (View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

beachten Sie, dass:

  • ich spreche nicht vom Rooten eines Geräts, also stellen Sie bitte die Lösungen bereit, die funktionieren können, ohne ein Gerät zu rooten.
  • ich spreche nicht davon, nur die Benachrichtigungsleiste auszublenden, sondern den gesamten Bildschirm, indem sowohl die Navigationsleiste als auch die Benachrichtigungsleiste ausgeblendet werden.
  • ich spreche von Jelly Beans API 4.1 oder höher als die Version 4.1 von Android
  • und bitte antworten mit code.

nach meinen Recherchen und Ihren Antworten bekomme ich Folgendes:

enter image description here

aber meine App sollte ohne Navigationsleiste so aussehen:

enter image description here

ich möchte nicht, dass die Systemnavigationsleiste in meiner App sichtbar ist.

13
Hamad

Ich bin nicht sicher, was Sie suchen, aber im Folgenden werden die Benachrichtigungsleiste und die Soft-Navigationstasten (wie bei Google Nexus-Geräten zu sehen) ausgeblendet, sodass die App im Wesentlichen "Vollbild" ist.

Edit2

In Android 4.4 (API 19) hat Google den neuen Immersive -Modus eingeführt, mit dem Status und Navigationsleiste ausgeblendet werden können und eine echte Vollbild-Benutzeroberfläche ermöglicht wird.

// This snippet hides the system bars.
private void hideSystemUI() {
    // Set the IMMERSIVE flag.
    // Set the content to appear under the system bars so that the content
    // doesn't resize when the system bars hide and show.
    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);
}

// This snippet shows the system bars. It does this by removing all the flags
// except for the ones that make the content appear under the system bars.
private void showSystemUI() {
    mDecorView.setSystemUiVisibility(
               View.SYSTEM_UI_FLAG_LAYOUT_STABLE
             | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
             | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}

Referenz:
https://developer.Android.com/training/system-ui/immersive.html

Bearbeiten:
Getestet auf Android 4.3 (API 18) und Android 4.1 (API 16) mit Soft Nav-Tasten.

@Override
protected void onCreate(Bundle b) {
    super.onCreate(b);

    setContentView(R.layout.main);

    int mUIFlag = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LOW_PROFILE
                | View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;

    getWindow().getDecorView().setSystemUiVisibility(mUIFlag);
}

Weitere Informationen finden Sie auf http://developer.Android.com/reference/Android/view/View.html#setSystemUiVisibility(int)

29
kaderud

- Um die Statusleiste auszublenden:

Eine großartige Lösung, die ich für dieses Problem gefunden habe, wobei für jede Aktivität theme & windowSoftInputMode die folgenden Werte festgelegt wurden:

<activity   Android:name=".MyActivity"
            Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen" 
            Android:windowSoftInputMode="adjustResize">  <!-- theme : to set the activity to a full screen mode without a status bar(like in some games) -->
</activity>                                              <!-- windowSoftInputMode : to resize the activity so that it fits the condition of displaying a softkeyboard -->

für mehr Info siehe hier .

- Benachrichtigungsleiste ausblenden:

Es gibt zwei Wege:

1- rooten Sie Ihr Gerät, öffnen Sie das Gerät in adb window command und führen Sie dann Folgendes aus:

 adb Shell >
 su >
 pm disable com.Android.systemui >

und um es zurückzubekommen, machen Sie dasselbe, ändern Sie jedoch disable in enable.

2- fügt am Ende der Datei build.prop Ihres Geräts die folgende Zeile hinzu:

qemu.hw.mainkeys = 1

dann, um es zurückzubekommen, einfach entfernen.

und wenn Sie nicht wissen, wie man die Datei build.prop bearbeitet:

  • laden Sie EsExplorer auf Ihrem Gerät herunter und suchen Sie nach build.prop. Ändern Sie dann die Berechtigungen zum Lesen und Schreiben. Fügen Sie schließlich die Zeile hinzu.
  • laden Sie eine spezialisierte Build.prop-Editor-App wie build.propEditor herunter.
  • oder verweisen auf diesen Link .
2
Muhammed Refaat

Auf dem neuen Android 4.4 sollten Sie folgende Zeile hinzufügen:

View.SYSTEM_UI_FLAG_IMMERSIVE;

Die neue Arbeitslösung ist also zumindest auf nexus4 4.4.2

final int mUIFlag = 
        View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
              | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
              | View.SYSTEM_UI_FLAG_LOW_PROFILE
              | View.SYSTEM_UI_FLAG_FULLSCREEN
              | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_IMMERSIVE;

Immersive alleine funktioniert nicht, obwohl es in Kombination mit anderen Flaggen funktioniert. Weitere Informationen finden Sie in der Dokumentation. Dann fügen Sie in der Aktivität die Aktivierung dieses Setups wie hier gezeigt hinzu (ich füge nur der Konsistenz hinzu)

getWindow().getDecorView().setSystemUiVisibility(mUIFlag);
1
sivi

Ich denke, Sie können die Systemleiste in Android 4.0 nicht ausblenden> (nur bei Tablets, bei Handys, die Sie sollten)

Was Sie tun können, ist das Ausblenden der Symbole und das Deaktivieren einiger Schaltflächen (alle außer Home)

Sie können dies versuchen:

        if (Android.os.Build.VERSION.SDK_INT >= Android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);              

        }

Auch zum Deaktivieren der Tasten:

Dies ist für den Zurück-Button:

  public boolean onKeyDown(int keyCode, KeyEvent event) {
    return false;
  }

Dies für das Menü:

@Override
public void onWindowFocusChanged(boolean hasFocus) {

        try
        {
           if(!hasFocus)
           {
                Object service  = getSystemService("statusbar");
                Class<?> statusbarManager = Class.forName("Android.app.StatusBarManager");
                Method collapse = statusbarManager.getMethod("collapse");
                collapse .setAccessible(true);
                collapse .invoke(service);
           }
        }
        catch(Exception ex)
        {
        }

}
0
leojg

Android Version: 4.2.2 - Gerät: Vega Tablet

Android-App zum Ausblenden von Status und Systemleiste und Anzeigen des vollständigen Bildschirms Ich habe diese Schritte ausgeführt.

AndroidManifest.xml

   <application
        Android:allowBackup="true"
        Android:icon="@mipmap/ic_launcher"
        Android:label="@string/app_name">
        <activity
            Android:name=".MainActivity"
            Android:label="@string/app_name"
            Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen">
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN" />
                <category Android:name="Android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

MainActivity.Java

super.onCreate(savedInstanceState);
getWindow().getDecorView().setSystemUiVisibility(0x10);
setContentView(R.layout.activity_main);

Der obige Code hat für meine App perfekt funktioniert.

0
Vijaysachin

Ich habe zwei Layouts erstellt, eines für die normale Größe und eines für den Vollbildmodus. Im Vollbildmodus erhalte ich die Gerätegröße und ordne sie dem Video-Player zu

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getRealSize(size);
int w=size.x;
int h=size.y;
videoPlayer.setFixedSize(w, h);
0
Omid Aminiva

Videoplayer werden im Vollbildmodus ausgeführt, indem Sie die

myView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

setFlags() vor setContentView(View)

Dadurch wird die Systemleiste bei jeder Benutzerinteraktion angezeigt, genau wie bei Video-Playern.

Am ehesten können Sie Ihre App im Vollbildmodus ausführen, indem Sie den Modus Licht aus einstellen. Die Systemschaltflächen werden als Punkte angezeigt. ).

Um den Lights-Out-Modus zu verwenden, verwenden Sie einfach eine Ansicht in Ihrer Aktivität und rufen Sie an

anyView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

Um die Navigationsleiste auszublenden, verwenden Sie diese Option in Ihrer onStart(), sodass sie sich jedes Mal, wenn Sie zu dieser Aktivität gelangen, im Vollbildmodus befindet .

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

Ich hoffe das hilft !

0
jbmeta