Bağlı ekranları destekleme

Bağlı ekranlar, masaüstü pencere bölme deneyimini standart telefonlara genişleterek kullanıcıların mobil cihazlarından büyük ekranlara erişmesine olanak tanır. Bu özellik, uygulama etkileşimi ve kullanıcı üretkenliği için yeni olanaklar sunar.

Masaüstü pencereleme özelliğinin tüm benzersiz özellikleri bağlı ekranlar için geçerlidir. Bir telefonu ekrana bağladığınızda telefonun durumu değişmez ve bağlı ekranda boş bir masaüstü oturumu başlar. Cihaz ve ekran, her ekrana özgü uygulamalara sahip iki ayrı sistem gibi çalışır.

Şekil 1. Telefon harici bir ekrana bağlıyken ekranda masaüstü oturumu açık ve telefon kendi durumunu koruyor.

Tablet gibi pencereli görüntüleme özellikli bir cihazı harici bir monitöre bağlarsanız masaüstü oturumu her iki ekrana da genişler. Bu durumda iki ekran tek bir sürekli sistem olarak çalışır. Bu kurulum, pencerelerin, içeriğin ve imlecin iki ekran arasında serbestçe hareket etmesine olanak tanır.

Şekil 2. Masaüstü oturumunu her iki ekrana da genişleten, harici bir monitöre bağlı tablet.

Bağlı ekranları etkili bir şekilde desteklemek için uygulamanızın tasarımı ve uygulamasının çeşitli yönlerine dikkat etmeniz gerekir. Aşağıdaki en iyi uygulamalar, sorunsuz ve üretken bir kullanıcı deneyimi sağlar.

Dinamik görüntülü reklam değişikliklerini işleme

Birçok uygulama, Display nesnesi ve özelliklerinin uygulamanın yaşam döngüsü boyunca değişmeyeceği varsayılarak oluşturulur. Ancak kullanıcı harici bir monitörü bağladığında veya monitörün bağlantısını kestiğinde ya da uygulama penceresini ekranlar arasında taşıdığında, uygulamanızın bağlamı veya penceresiyle ilişkili temel Display nesnesi değişebilir. Ekranın boyut, çözünürlük, yenileme hızı, HDR desteği ve yoğunluk gibi özelliklerinin tümü farklı olabilir. Örneğin, değerleri telefona göre sabit kodlarsanız düzenler dış ekranda bozulabilir.

Harici ekranların piksel yoğunlukları da çok farklı olabilir. Uygulamanızın yoğunluk değişikliklerine doğru şekilde yanıt verdiğinden emin olmanız gerekir. Bu, düzenler için yoğunluktan bağımsız pikseller (dp) kullanmayı, yoğunluğa özel kaynaklar sağlamayı ve kullanıcı arayüzünüzün uygun şekilde ölçeklendirilmesini sağlamayı içerir.

Doğru bağlamı kullanma

Çok ekranlı ortamlarda doğru bağlamı kullanmak çok önemlidir. Kaynaklara erişirken etkinlik bağlamı (gösterilir) uygulama bağlamından (gösterilmez) farklıdır.

Etkinlik bağlamı, ekranla ilgili bilgileri içerir ve her zaman etkinliğin göründüğü ekran alanına göre ayarlanır. Bu sayede, uygulamanızın ekran yoğunluğu veya pencere metrikleri hakkında doğru bilgiler edinebilirsiniz. Mevcut pencere veya ekran hakkında bilgi edinmek için her zaman etkinlik bağlamını (veya kullanıcı arayüzüne dayalı başka bir bağlamı) kullanın. Bu durum, bağlamdaki bilgileri kullanan bazı sistem API'lerini de etkiler.

Görüntüleme bilgilerini alma

Belirli bir ekranla ilgili bilgileri (ör. ekranın boyutu veya ekranın güvenli olup olmadığını belirten işaretler) almak için Display sınıfını kullanabilirsiniz. Mevcut ekranları almak için DisplayManager sistem hizmetini kullanın:

val displayManager = getSystemService(Context.DISPLAY_SERVICE) as DisplayManager
val displays = displayManager.getDisplays()

Etkinlik lansmanını ve yapılandırmasını yönetme

Bağlı ekranlar sayesinde uygulamalar, başlatıldıklarında veya başka bir etkinlik oluşturduklarında hangi ekranda çalışacaklarını belirtebilir. Bu davranış, manifest dosyasında tanımlanan etkinlik başlatma moduna ve etkinliği başlatan öğe tarafından ayarlanan intent işaretlerine ve seçeneklere bağlıdır.

Bir etkinlik ikincil bir ekrana taşındığında uygulamanızda bağlam güncellemesi, pencere boyutlandırması, yapılandırma ve kaynak değişiklikleri yaşanabilir. Yapılandırma değişikliği etkinlik tarafından yönetilirse onConfigurationChanged() içinde bildirim gönderilir. Aksi takdirde etkinlik yeniden başlatılır.

Bir etkinlik için seçilen başlatma modu birden fazla örneğine izin veriyorsa ikincil bir ekranda başlatma, etkinliğin yeni bir örneğini oluşturabilir. Her iki etkinlik de aynı anda devam ettirilir. Bu, belirli çoklu görev senaryoları için yararlı olabilir.

ActivityOptions simgesini kullanarak belirli bir ekranda etkinlik başlatabilirsiniz:

val options = ActivityOptions.makeBasic()
options.setLaunchDisplayId(targetDisplay.displayId)
startActivity(intent, options.toBundle())

Cihaz izin verilenler listelerinden kaçının

Uygulamalar bazen izin verilenler listesi aracılığıyla veya yerleşik ekran boyutunu kontrol ederek büyük ekran kullanıcı arayüzünü ve özelliklerini belirli cihazlarla kısıtlar. Bağlı ekranlarda ise neredeyse tüm yeni cihazlar büyük ekranlara bağlanabildiğinden bu yaklaşım artık etkili değildir. Uygulamanızı, çeşitli ekran boyutlarına ve yoğunluklara duyarlı ve uyumlu olacak şekilde tasarlayın.

Harici çevre birimlerini destekleme

Kullanıcılar harici bir ekrana bağlandığında genellikle masaüstüne benzer bir ortam oluştururlar. Bu genellikle harici klavyeler, fareler, izleme panelleri, web kameraları, mikrofonlar ve hoparlörler kullanılmasını içerir. Uygulamanızın bu çevre birimleriyle sorunsuz bir şekilde çalıştığından emin olmanız gerekir. Klavye kısayollarını işleme, fare işaretçisi etkileşimlerini yönetme, harici kameraları veya mikrofonları doğru şekilde destekleme ve ses çıkışı yönlendirmesine uyma bu kapsamda yer alır. Ayrıntılı bilgi için Büyük ekranlarda giriş uyumluluğu başlıklı makaleyi inceleyin.

Kullanıcı verimliliğini artırın

Bağlı ekranlar, kullanıcı üretkenliğini artırma konusunda önemli bir fırsat sunar. Artık masaüstü uygulamalarına benzer deneyimler sunabilecek mobil uygulamalar oluşturmak için gerekli araçlara sahipsiniz. Kullanıcı verimliliğini artırmak için aşağıdaki özellikleri uygulayabilirsiniz:

  • Kullanıcıların aynı uygulamanın birden fazla örneğini açmasına izin verin. Bu özellik, belgeleri karşılaştırma, farklı ileti dizilerini yönetme veya birden fazla dosyayı aynı anda görüntüleme gibi görevler için çok değerlidir.
  • Kullanıcıların sürükle ve bırak yöntemiyle uygulamanızda ve uygulama dışında zengin veriler paylaşmalarına olanak tanıyın.
  • Güçlü bir durum yönetimi sistemi uygulayarak kullanıcıların yapılandırma değişiklikleri sırasında iş akışlarını sürdürmelerine yardımcı olun.

Bu yönergeleri uygulayarak ve sağlanan kod örneklerini kullanarak, bağlı ekranlara sorunsuz bir şekilde uyum sağlayan ve kullanıcılara daha zengin ve üretken bir deneyim sunan uygulamalar oluşturabilirsiniz.