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:
Ş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.
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ığındaonCreate()
ç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şaretlerinionResume()
. veyaonWindowFocusChanged()
. 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.