Durum çubuğunu gizleme

Bu derste, çalışmanızın farklı sürümlerinde durum çubuğunun nasıl gizleneceği Android Durum çubuğunu (ve isteğe bağlı olarak gezinme çubuğunu) gizlemek, daha fazla görüntüleme alanı kapladığından daha etkileyici bir kullanıcı deneyimi sunar.

Şekil 1'de görünür durum çubuğu olan bir uygulama gösterilmektedir:

sistem çubukları

Şekil 1. Görünür durum çubuğu.

Şekil 2'de gizli durum çubuğu olan bir uygulama gösterilmektedir. İşlem çubuğunun da gizlendiğini unutmayın. İşlem çubuğunu hiçbir zaman durum çubuğu olmadan göstermemelisiniz.

sistem çubukları

Şekil 2. Gizli durum çubuğu.

Android 4.0 ve Önceki Sürümlerde Durum Çubuğunu Gizle

Android 4.0 (API düzeyi 14) ve önceki sürümlerde WindowManager işaret. Bunu programlı olarak ya da uygulamanızın manifest dosyasında bir etkinlik teması belirleyerek. Uygulamanızın içinde bir etkinlik teması manifest dosyasını kullanmak, durum çubuğunun daima etkin kalması gerekiyorsa tercih edilen yaklaşımdır. (daha açık bir şekilde ifade etmek gerekirse, temaya göre ekleyebilirsiniz. Örnek:

<application
    ...
    android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" >
    ...
</application>

Bir etkinlik teması kullanmanın avantajları şunlardır:

  • Kullanımı daha kolaydır ve bir işareti programatik olarak ayarlamaktan daha az hataya açıktır.
  • Sistem, ihtiyacı olan bilgilere sahip olduğu için daha yumuşak kullanıcı arayüzü geçişleri sağlar. API'yi kullanabilirsiniz.

Alternatif olarak, WindowManager işaretlerini programatik olarak ayarlayabilirsiniz. Bu yaklaşım, kullanıcı etkileşimde bulunurken durum çubuğunun gizlenmesini ve gösterilmesini kolaylaştırır uygulamanız:

Kotlin

class MainActivity : Activity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // If the Android version is lower than Jellybean, use this call to hide
        // the status bar.
        if (Build.VERSION.SDK_INT < 16) {
            window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN)
        }
        setContentView(R.layout.activity_main)
    }
    ...
}

Java

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // If the Android version is lower than Jellybean, use this call to hide
        // the status bar.
        if (Build.VERSION.SDK_INT < 16) {
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
        }
        setContentView(R.layout.activity_main);
    }
    ...
}

WindowManager flag'leri ayarladığınızda (etkinlik teması veya programatik olarak) işaretler, uygulamanız bunları temizlemediği sürece etkin kalır.

Tekliflerinizi otomatikleştirmek ve optimize etmek için FLAG_LAYOUT_IN_SCREEN. özelliğini etkinleştirdiğinizde kullanabileceğiniz ekran alanını kullanacak şekilde FLAG_FULLSCREEN. Bu, durum çubuğu gizlenip gösterildiğinde içeriğin yeniden boyutlandırılmasını engeller.

Android 4.1 ve sonraki sürümlerde Durum Çubuğunu gizleme

Android 4.1 (API düzeyi 16) ve sonraki sürümlerde durum çubuğunu setSystemUiVisibility() kullanılıyor. setSystemUiVisibility(), kullanıcı arayüzü bayraklarını şurada ayarlıyor: bireysel görünüm düzeyi; bu ayarlar pencere düzeyinde toplanır. Kullanım Kullanıcı arayüzü işaretlerini ayarlamak için setSystemUiVisibility() sistem çubukları üzerinde daha ayrıntılı kontrol sahibi olmanızı sağlar. WindowManager işaret. Bu snippet durum çubuğunu gizler:

Kotlin

// Hide the status bar.
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN
// Remember that you should never show the action bar if the
// status bar is hidden, so hide that too if necessary.
actionBar?.hide()

Java

View decorView = getWindow().getDecorView();
// Hide the status bar.
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
// Remember that you should never show the action bar if the
// status bar is hidden, so hide that too if necessary.
ActionBar actionBar = getActionBar();
actionBar.hide();

Aşağıdakileri göz önünde bulundurun:

  • Kullanıcı arayüzü işaretleri temizlendikten sonra (örneğin, etkinliği), çubukları tekrar gizlemek isterseniz uygulamanızın bunları sıfırlaması gerekir. Ayrıntılı bilgi için Kullanıcı Arayüzü Görünürlüğü Değişikliklerine Yanıt Verme Böylece, uygulamanızın bunu yapabilmesi için kullanıcı arayüzü görünürlüğü uygun tepkiler vermesi gerekir.
  • Kullanıcı arayüzü işaretlerini ayarladığınız yer fark yaratır. Etkinliğinizdeki sistem çubuklarını onCreate() yöntemini kullanıyorsanız ve kullanıcı Ana Sayfa'ya bastığında sistem çubukları yeniden görünür. Kullanıcı etkinliği yeniden açtığında onCreate() çağrılmayacağından sistem çubukları görünür olmaya devam eder. Sistem kullanıcı arayüzünün ve etkinliğiniz için gezinmeye devam ederken mevcut olan kullanıcı arayüzü işaretlerini onResume(). veya onWindowFocusChanged().
  • setSystemUiVisibility() yöntemi yalnızca ona çağrı yaptığınız görünüm görünür olduğunda etkili olur.
  • Görünümden çıkılması işaretlemelere neden olur setSystemUiVisibility() ile ayarla var.

İçeriğin Durum Çubuğunun Arkasında Görünmesini Sağlayın

Android 4.1 ve daha sonraki sürümlerde, uygulamanızın içeriğini, uygulamanızın içeriğini gösterilir. Bunu yapmak için, SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN Şunları da kullanmanız gerekebilir: SYSTEM_UI_FLAG_LAYOUT_STABLE kullanmaya devam edebilirsiniz.

Bu yaklaşımı kullandığınızda, risklerin toplanması gereken kritik kısımların (örneğin, bir Haritalar uygulamasındaki yerleşik denetimler) tam olarak sistem çubuklarının kapsanması sağlanır. Bu durum uygulamanızı kullanılamaz hale getirebilir. Çoğu durumda bunu XML düzen dosyanıza android:fitsSystemWindows özelliğini ekleyerek, true. Bu, üst ViewGroup öğesinin dolgusunu ayarlar tıklayın. Bu, çoğu uygulama için yeterlidir.

Bununla birlikte bazı durumlarda, istenen kaliteyi elde etmek için varsayılan dolguyu değiştirmeniz ekleyebilirsiniz. Verilerinizin nasıl değişeceğini doğrudan değiştirmek içerik, sistem çubuklarına göre düzenlenir (pencerenin kaydırma çubuğu olarak bilinen bir alanı kaplarlar) "içerik insets"), fitSystemWindows(Rect insets) geçersiz kılınır. fitSystemWindows() yöntemi, bir pencerenin içerik eklerinde değişiklik yapıldığında hiyerarşiyi görüntülemek için pencerenin ve içeriklerini buna göre düzenlemeyebilir. Bu yöntemi geçersiz kılarak ek yerlerini (dolayısıyla uygulamanızın düzeni) istediğiniz gibi değiştirebilirsiniz.