2016-07-07 22 views
6

Android uygulamamı tam ekran yapmak istiyorum, ancak sadece belirli bir ekranda android gezinme çubuğunu gösteriyorum (ayarlarım). Gezinme çubuğunu kalıcı olarak ekranda gizlemenin tehlikeli olduğunu biliyorum, ancak bunun mümkün olup olmadığını bilmek istiyorum. Cihazımın köklenmesini ve Xposed çerçevesini kullanmayı inceledim.Sürükleyici Mod'u programatik olarak etkinleştirme/devre dışı bırakma

Gezinme çubuğunu veya "yapışkan mod" programsal olarak devre dışı bırakmanın ve daha sonra yeniden etkinleştirmenin bir yolu var mı?

Düzenleme: Android Sürükleyici Mod'a baktım ama kullanıcı kenara dokunursa gezinti çubuğu hala görünecek gibi görünüyor. Ayarlar ekranına gidene kadar gezinme çubuğunun herhangi bir ipucunu kaldırmak istiyorum.

cevap

2

Evet, mümkün. İstenen işlevselliği elde etmek için aşağıdaki kod snippet'ini kullanın.

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

DÜZENLEME 1: Daha fazla ayrıntı için

// 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. 
    View decorView = getWindow().getDecorView(); 
    decorView.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() { 
    View decorView = getWindow().getDecorView(); 
    decorView.setSystemUiVisibility(
      View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
      | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
      | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 
} 

altında google belgelerine bakın (Hacky) kalıcı olarak gizlemek için böyle bir şey deneyebilirsiniz olabilir

decorView.setOnSystemUiVisibilityChangeListener 
       (new View.OnSystemUiVisibilityChangeListener() { 
        @Override 
        public void onSystemUiVisibilityChange(int visibility) { 

          hideSystemUI(); 


        } 
       });` 
+0

Cevabınız için teşekkür ederiz. Bunu yayınlamadan önce ben bakıyordum ama Immersive Mode ile sorduğum soru şu satırdı: "Kullanıcı sistem çubuklarının sistem çubuklarının normal olarak göründüğü bölge boyunca içeri doğru bir kaydırma ile gösterilmesini sağlayabilir." Bu gizemi geçersiz kılmaz mı()? Kullanıcı benim ayar ekranına gidene kadar bunu devre dışı bırakmak istiyorum. – Jason

+0

Evet, aslında kullanıcı, sürükleyici modu ilk kez açtığında bir öğretici olarak gösterilir. Hangi, aşağı kaydırmanın tam ekran modunu kapatacağını söyler. –

+0

Doğru ve tam ekran modunu kapatmasını istemiyorum * diğer ekranlarıma gitmedikçe *. Asıl sorum bu. Kullanıcının belirli bir ekrana gidene kadar gezinme çubuğuna tamamen erişmesini engellemek istiyorum. – Jason