Multi-Window, Android'de aynı anda ekranda birden fazla uygulama çalıştırmaya olanak tanıyan bir dizi çoklu görev modudur. Sistem üç mod içerir: ekranı iki parçaya bölmek için Split Screen, mini pencerede video için Picture-in-Picture ve büyük ekranlarda isteğe bağlı boyutta pencereler için Freeform. Android Developers (2025)'e göre, 600 dp veya daha fazla ekran genişliğine sahip cihazlar için Multi-Window desteği zorunludur ve her geliştirici uygulamasını olası pencere boyutu değişikliklerine uyarlamalıdır.
Önemli Noktalar
Multi-Window, Android 7.0 Nougat (API 24) sürümünde tanıtılan ve aynı anda ekranda iki veya daha fazla uygulama çalıştırmaya olanak tanıyan bir Android özelliğidir. Bu mod, tek görev modunun üretkenliği sınırladığı tabletler ve büyük ekranlı cihazların artan popülaritesine Google'ın yanıtıydı.
Android 7.0'den önce, her uygulama tüm ekranı kaplıyordu — uygulamalar arasında geçiş yaparken önceki uygulama simge durumuna küçültülüyordu. Multi-Window bu modeli değiştirdi: artık bir uygulama etkin durumunu korurken ekranın bir kısmını kaplayabilir. Geliştiriciler için bu, onConfigurationChanged ve boyut değişikliklerini işlemenin zorunlu hale geldiği anlamına gelir.
Android 12L (2022)'de Google, büyük ekranlı cihazlar için Multi-Window'u varsayılan mod haline getirdi — tabletlerdeki tüm uygulamalar, çoklu pencereye izin veren bir modda çalışır. Tek istisna, manifestte açık yasak bulunan uygulamalardır.
Split Screen — en yaygın mod. Ekran yatay veya dikey olarak iki parçaya bölünür, kullanıcı bölücüyü sürükler. Telefonlarda ve tabletlerde kullanılabilir. Overview (Recents) aracılığıyla — uygulama simgesini üst veya alt kenara sürükleyerek etkinleştirilir.
Picture-in-Picture (PiP) — video ve navigasyon uygulamaları için bir mod. İçerik, hareket ettirilebilen bir mini pencerede (ekranın yaklaşık %15–25'i) görüntülenir. Android 8.0+'da kullanılabilir. Etkinleştirmek için Activity'de enterPictureInPictureMode() kullanın.
Freeform — masaüstü pencere yöneticilerine benzer, isteğe bağlı boyutta pencereler için bir mod. Android TV ve bazı üreticilerin büyük ekranlı cihazlarında (Samsung DeX) kullanılabilir. Uygulamalar başlık çubuğu ve kontrol düğmeleri olan pencerelerde çalışır.
Bir kullanıcı Multi-Window'u etkinleştirdiğinde, Android her uygulama için yeni bir Activity örneği oluşturur ve mevcut ekran alanını dağıtır. Activity'ler ayrı Task'lere yerleştirilir ancak aralarında bölücü bulunan aynı StackView'ı kullanır.
Sistem, her Activity'yi onConfigurationChanged() aracılığıyla boyut değişikliği hakkında bilgilendirir. Activity bu olayı işlemezse yeniden oluşturulur. Split Screen için pencere genişliği 220 dp'ye kadar düşebilir — platform tarafından desteklenen minimum genişlik.
Android, bir uygulamanın manifestte android:minWidth ve android:minHeight aracılığıyla minimum genişlik bildirmesine izin verir. Mevcut alan bu değerlerden küçükse Activity duraklamaya geçer.
Multi-Window'u desteklemek için manifestte android:resizeableActivity="true" işaretini ayarlamanız gerekir. Bu, pencere değiştiğinde uygulamanın yeniden boyutlandırılabileceği anlamına gelir. Android 12L+'da varsayılan olarak tüm uygulamalar yeniden boyutlandırılabilir olarak kabul edilir — işaret yok sayılır.
Pencere boyutu değiştiğinde, Activity yeniden oluşturulabilir (varsayılan) veya manifestte configChanges="screenSize|smallestScreenSize" belirtilmişse onConfigurationChanged içinde olayı işleyebilir. Durum kaybını önlemek için ana Activity'ler için configChanges belirtilmesi önerilir.
<activity
android:name=".MainActivity"
android:resizeableActivity="true"
android:configChanges="screenSize|smallestScreenSize|orientation" />
Yeniden boyutlandırmayı desteklemeyen uygulamalar için Android bir uyarı iletişim kutusu gösterir. Bu durumda, çoklu pencere moduna geçerken sistem Activity'yi sonlandırabilir ve yeniden başlatma önerisiyle bir snackbar gösterebilir.
Multi-Window standart Activity yaşam döngüsünü değiştirir. Bitişik pencerede başka bir uygulama etkin hale geldiğinde, mevcut Activity onPause() çağrısı alır ancak onStop() almaz — odakta olmasa da görünür kalır. Bu önemlidir: bir video oynatıcı onStop'ta değil onPause'da oynatmaya devam etmelidir.
Geliştiricilerin durumlar arasında ayrım yapması gerekir: onPause + isInMultiWindowMode() = true yalnızca odak kaybı anlamına gelir, ekrandan çıkma değil. Video ve animasyonlar için bu, oynatmayı durdurmamak, yalnızca kontrol öğelerinin seçimini kaldırmak için bir sinyaldir.
Multi-Window'dan çıkarken, onMultiWindowModeChanged() onResume()'dan önce çağrılır. Bu, kullanıcı etkileşime başlamadan önce arayüzü tam ekran modu için yeniden oluşturma fırsatı verir.
Birinci kural durumu kaydetmektir. Çoklu pencere modunda Activity her an yeniden oluşturulabilir. Yapılandırma değişiklikleri arasında kalıcı olması gereken tüm veriler için ViewModel'de SavedStateHandle veya onSaveInstanceState kullanın.
İkinci kural minimum 220 dp genişlikte test etmektir. Bu değer Split Screen'deki en dar pencere olarak kabul edilir. Arayüz okunabilir ve işlevsel kalmalıdır. Bazı öğeler sınırları aşarsa, düzenler arasında geçiş yapmak için Window Size Class kullanın.
Üçüncü kural Multi-Window'da çalışmayan işlevleri devre dışı bırakmaktır. Örneğin, ekran çok küçükse Kamera kullanılamayabilir. Kamerayı veya diğer tam ekran işlevleri başlatmadan önce isInMultiWindowMode()'u kontrol edin.
Sıkça Sorulan Sorular
Manifestte android:resizeableActivity="false" olarak ayarlayın. Android 12L+'da, büyük ekranlı cihazlar için işaret yok sayılır, bu nedenle tamamen yasaklamak için android:maxAspectRatio kullanın.
Activity'den isInMultiWindowMode() çağırın. Yöntem, uygulama Split Screen, PiP veya Freeform'da çalışıyorsa true döndürür. Ayrıca onMultiWindowModeChanged()'e abone olabilirsiniz.
Android TV'de yalnızca Picture-in-Picture modu kullanılabilir. Split Screen ve Freeform desteklenmez — TV'ler köşede PiP penceresi olan tek bir ana ekran kullanır.
Ön plan hizmeti moddan bağımsız olarak çalışmaya devam eder. Ancak, uygulama PiP'e geçerse, sistem kaynakları korumak için yürütmeyi geçici olarak duraklatabilir.
Android, ClipData ve View.OnDragListener aracılığıyla Multi-Window'da pencereler arasında sürükle ve bırak desteği sağlar. Veriler, FLAG_GRANT_READ_URI_PERMISSION ile ContentProvider veya Intent aracılığıyla aktarılır.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun