TV cihazları, uygulamalar için sınırlı bir gezinme kontrolü grubu sağlar. TV uygulamanız için etkili bir gezinme şeması oluşturmak, bu sınırlı kontrolleri ve kullanıcıların uygulamanızı kullanırken karşılaştığı sınırlamaları anlamaya bağlıdır. TV için Android uygulamanızı oluştururken kullanıcının dokunmatik ekran yerine uzaktan kumanda düğmelerini kullanırken nasıl gezindiğine özellikle dikkat edin.
İlkeler
Amaç, kullanıcı arayüzüne hakim olmadan veya dikkati içerikten uzaklaştırmadan gezinmenin doğal ve tanıdık hissettirmesidir. Aşağıdaki ilkeler, TV uygulamalarında tutarlı ve sezgisel bir kullanıcı deneyimi için temel oluşturmaya yardımcı olur.
İçeriğe erişimi kolaylaştırın. Kullanıcılar, içeriğe en az sayıda tıklamayla hızlıca erişmek ister. Bilgilerinizi en az sayıda ekran gerektirecek şekilde düzenleyin.
Gezinmeyi kullanıcılar için tahmin edilebilir hale getirmek amacıyla en iyi uygulamaları ve önerileri uygulayın. Kafası karışıklığına ve öngörülemezliğe yol açtığı için gezinme kalıplarını gereksiz yere yeniden oluşturmayın.
Geniş çapta benimsenen kullanıcı davranışlarını sorunsuz bir şekilde desteklemek için gezinmeyi yeterince basitleştirin. Gereksiz gezinme katmanları ekleyerek süreci çok karmaşık hale getirmeyin.
Kumandalar
Denetleyiciler, minimalist uzaktan kumandalardan karmaşık oyun denetleyicilerine kadar çeşitli stillerde sunulur. Tüm kumandalarda yön tuşunun yanı sıra seçme, ana sayfa ve geri düğmeleri bulunur. Diğer düğmeler modele göre değişir.
D-pad
TV'de birincil gezinme yöntemi, yukarı, aşağı, sol ve sağ yönlü donanım düğmelerini içeren D-pad'dir. Yön tuşları, odağı bir nesneden basılan düğme yönündeki en yakın nesneye aktarır.
Seçme düğmesi
Odaklanılan ekran öğesini seçer.
Ana sayfa düğmesi
Kullanıcıyı sistemin ana ekranına götürür.
Geri düğmesi
Kullanıcılara önceki görünüme dönme olanağı sunar.
Mikrofon düğmesi
Google Asistan'ı veya ses girişini başlatır.
D-pad ile gezinme
TV cihazlarında kullanıcılar, D-pad veya ok tuşlarını kullanarak gezinir. Bu kontrol türü, hareketi yukarı, aşağı, sola ve sağa doğru sınırlar. TV için optimize edilmiş harika bir uygulama oluşturmak istiyorsanız kullanıcının bu sınırlı kontrolleri kullanarak uygulamanızda nasıl gezineceğini hızlıca öğrenebileceği bir gezinme şeması sağlamanız gerekir.
Android çerçevesi, düzen öğeleri arasındaki yönlü gezinmeyi otomatik olarak işler. Bu nedenle, uygulamanız için genellikle ek bir işlem yapmanız gerekmez. Ancak, gezinmeyle ilgili sorunları tespit etmek için gezinmeyi D-pad denetleyicisiyle kapsamlı bir şekilde test etmeniz gerekir.
Uygulamanızın gezinme sisteminin TV cihazındaki D-pad ile iyi çalıştığını test etmek için aşağıdaki yönergeleri uygulayın:
- D-pad denetleyicisi olan bir kullanıcının ekrandaki tüm görünür denetimlere gidebildiğinden emin olun.
- Odaklanılmış kaydırma listelerinde, D-pad'in yukarı ve aşağı düğmelerinin listeyi kaydırdığından, seçme düğmesinin ise listedeki bir öğeyi seçtiğinden emin olun. Kullanıcıların listeden bir öğe seçebildiğini ve bir öğe seçildiğinde listenin kaydırılmaya devam ettiğini doğrulayın.
- Kontroller arasında geçişin kolay ve tahmin edilebilir olduğundan emin olun.
Yönlü gezinmeyi değiştirme
Android çerçevesi, düzenlerinizdeki odaklanılabilir öğelerin göreli konumuna göre yönlü bir gezinme şemasını otomatik olarak uygular. D-pad denetleyici kullanarak uygulamanızda oluşturulan gezinme şemasını test edin. Testten sonra, kullanıcıların düzenlerinizde belirli bir şekilde ilerlemesini istediğinize karar verirseniz kontrolleriniz için açık yönlü gezinme ayarlayabilirsiniz.
Aşağıdaki kod örneğinde, TextView düzen nesnesi için odağı alacak sonraki kontrolün nasıl tanımlanacağı gösterilmektedir:
<TextView android:id="@+id/Category1" android:nextFocusDown="@+id/Category2" />
Aşağıdaki tabloda, Android kullanıcı arayüzü widget'ları için kullanılabilen tüm gezinme özellikleri listelenmiştir:
| Özellik | İşlev |
|---|---|
nextFocusDown |
Kullanıcı aşağı doğru gittiğinde odağı alacak bir sonraki görünümü tanımlar. |
nextFocusLeft |
Kullanıcı sola gittiğinde odaklanılacak bir sonraki görünümü tanımlar. |
nextFocusRight |
Kullanıcı sağa gittiğinde odağı alacak bir sonraki görünümü tanımlar. |
nextFocusUp |
Kullanıcı yukarı gezinirken odağı alacak bir sonraki görünümü tanımlar. |
Bu açık gezinme özelliklerinden birini kullanmak için değeri düzendeki başka bir widget'ın android:id olarak ayarlayın. Son kontrolün odağı tekrar ilk kontrole yönlendirmesi için gezinme sırasını döngü olarak ayarladığınızdan emin olun.
Net odaklama ve seçim sağlama
Bir uygulamanın TV cihazlarındaki gezinme şemasının başarısı, kullanıcının hangi kullanıcı arayüzü öğesinin odaklandığını hızlıca belirleyip belirleyememesine bağlıdır. Odaklanılan öğeyi ve dolayısıyla kullanıcının hangi öğe üzerinde işlem yapabileceğini net bir şekilde belirtmezseniz kullanıcılar kısa sürede hayal kırıklığına uğrayıp uygulamanızdan çıkabilir. Aynı nedenle, uygulamanız başladıktan hemen sonra veya boşta kaldığı herhangi bir zamanda kullanıcının üzerinde işlem yapabileceği bir öğeyi her zaman ön planda tutmak önemlidir.
Uygulama düzeninizde ve uygulamanızda, kullanıcıların bir sonraki adımda hangi işlemleri yapabileceklerini belirlemelerine yardımcı olmak için renk, boyut, animasyon veya bu özelliklerin bir kombinasyonunu kullanın. Uygulamanızda odağı belirtmek için tek tip bir şema kullanın.
Android, odaklanılmış ve seçilmiş kontroller için öne çıkan özellikleri uygulamak üzere Drawable durum listesi kaynakları sağlar. Aşağıdaki kod örneği, kullanıcının denetime gidip denetimi seçtiğini belirtmek için bir düğmede görsel davranışın nasıl etkinleştirileceğini gösterir:
<!-- res/drawable/button.xml --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/button_pressed" /> <!-- pressed --> <item android:state_focused="true" android:drawable="@drawable/button_focused" /> <!-- focused --> <item android:state_hovered="true" android:drawable="@drawable/button_focused" /> <!-- hovered --> <item android:drawable="@drawable/button_normal" /> <!-- default --> </selector>
Aşağıdaki düzen XML örnek kodu, önceki durum listesi çizilebilir öğesini Button için uygular:
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:background="@drawable/button" />
Odaklanılabilir ve seçilebilir kontrollerde, etraflarındaki vurguların net bir şekilde görünmesi için yeterli dolgu sağladığınızdan emin olun.
Geri düğmesiyle gezinme
Platformdaki uygulamalarda tutarlılık sağlamak için geri düğmesinin davranışının bu yönergelere uygun olduğundan emin olun.
Tahmin edilebilir geri düğmesi davranışı kullanma
Basit ve tahmin edilebilir bir gezinme deneyimi oluşturmak için kullanıcı uzaktan kumandanın geri düğmesine bastığında onları önceki hedefe götürün.
Kullanıcı bir menü öğesinden sayfanın ortasındaki bir karta gidip geri düğmesine basarsa sonuç, uygulamanın üst gezinmeyi mi yoksa sol gezinmeyi mi kullandığına bağlıdır:
- Uygulama, üst gezinmeyi kullanıyor: Hızlıca kaydırarak ve menüde odağı etkinleştirerek kullanıcıyı sayfanın en üstüne geri götürün.
- Uygulama, sol gezinmeyi kullanıyor: Sol taraftaki menüyü etkinleştirin ve şu anda etkin olan menü öğesine odaklanın.
Geri düğmesinin onay ekranlarıyla engellenmediğinden veya sonsuz döngüye girmediğinden emin olun.
Yapmayın.
Çıkış kapısı kullanmaktan kaçının. Kullanıcıların uygulamadan onay almadan çıkmasına izin verin.
Yapmayın.
Menüyü kapatıp açma işleminde sonsuz döngüye asla girmez. Geri düğmesine basıldığında uygulamadan çıkılması idealdir. Özel durumlar (ör. çocuk profili) dışında menüde çıkış düğmesi göstermeyin.
Yukarı veya geri düğmesi göstermeyin
Elde taşınan cihazların aksine, uzaktan kumandadaki geri düğmesi TV'de geriye doğru gezinmek için kullanılır. Ekranda sanal geri düğmesi göstermenize gerek yoktur:
Yapmayın.
Gerekirse iptal düğmesi gösterin.
Yalnızca onaylama, yıkıcı veya satın alma işlemleri görünür durumdaysa önceki hedefe dönen bir İptal düğmesi eklemek iyi bir uygulamadır:
Yapılacaklar
Geri gezinmeyi uygulama
Android çerçevesi, D-pad'de olduğu gibi genellikle geri gezinmeyi iyi bir şekilde yönetir. Gezinme bileşenini kullanıyorsanız çeşitli gezinme grafiklerini destekleyebilirsiniz. Bazen, geri düğmesinin odağı uzun bir listenin başına sıfırlaması gibi özel davranışlar uygulamanız gerekebilir.
ComponentActivity,
FragmentActivity ve AppCompatActivity için temel sınıf olan bu sınıf,
getOnBackPressedDispatcher() işlevini çağırarak alabileceğiniz OnBackPressedDispatcher özelliğini kullanarak geri düğmesinin davranışını kontrol etmenize olanak tanır.
Daha fazla bilgi için Özel geri gezinme sağlama başlıklı makaleyi inceleyin.
TV'de oynatma kontrolleri
Video oynatma, TV'deki en önemli özelliklerden biridir. Android TV'deki uygulamalarda video oynatıcıların aynı şekilde çalışması önemlidir. TV'de oynatma kontrolleriyle ilgili yönergelere göz atın.
Canlı sekme gezinme
TV uygulaması kalite koşullarına uymanın yanı sıra Canlı sekmesine entegre edilmiş canlı TV özet akışı içeren uygulamalar, aşağıdaki bölümlerde açıklandığı gibi sorunsuz oynatma ve doğrudan geri gitme koşullarını da karşılamalıdır.
Sorunsuz oynatma
Sorunsuz oynatma, Google TV ve Android TV'deki herhangi bir Canlı veya Lineer kanal derin bağlantısından sonraki uygulama içi davranışlar için geçerlidir.
Kullanıcı bir derin bağlantıyı tıkladığında aşağıdaki kurallar geçerli olur:
- Gecikme yok: Kullanıcılar, oturum açma veya kaydolma akışları ya da markalama videoları gibi ekranlar engellenmeden veya geciktirilmeden doğrudan kanal oynatmaya yönlendirilmelidir.
- Soğuk başlatma istisnası: Derin bağlantı, hedef uygulamanın soğuk başlatma ile yüklenmesini başlatırsa başlatma gecikmesine izin verilir. Bu durumda, uygulama başlatma markalama videolarına veya animasyonlarına da izin verilir.
- Yükleme gecikmesi istisnası: Kanala geçiş birkaç saniye sürüyorsa markalama gösterilmesine izin verilir. Süre yalnızca kanalın yüklenmesi için gereken süre kadar olmalıdır.
Kullanıcının oturumu kapalıysa veya kullanıcı abone değilse oturum açma ya da kaydolma akışını tamamlamak için ücretli kanalda oynatmayı engelleyebilirsiniz.
Direct-back
Kullanıcılar, Canlı sekmesindeki bir derin bağlantıdan uygulamayı başlattıktan sonra geri düğmesine bastığında, ne kadar zaman geçtiğine bakılmaksızın tek bir geri düğmesiyle Canlı sekmesine geri dönmelidir. Bu doğrudan geri yönlendirme davranışı, Google TV ve Android TV'deki tüm Canlı sekmesi derin bağlantıları için gereklidir.
Canlı sekmesi derin bağlantıları, eklenen bir derin bağlantı parametresiyle ayırt edilir:
?exit_on_back=[true|false]. Uygulamaların, uygulamanın Canlı sekmesinden başlatılıp başlatılmadığını belirlemek için bu parametreyi ayrıştırması gerekir. exit_on_back true ise uygulamalar doğrudan geri gitme davranışını uygulamalıdır.
Kullanıcının derin bağlantıdan sonraki ilk düğme olarak geri düğmesi dışında herhangi bir düğmeye basması durumunda doğrudan geri gitme koşulunun geçerli olmayacağını ve yalnızca standart geri düğmesi davranışının gerekli olduğunu unutmayın.
Örneğin, bir kullanıcının derin bağlantıyı takip ettikten sonra D-pad'in seçim düğmesine bastığını ve bunun sonucunda bir kontrol yer paylaşımının açıldığını varsayalım. Kullanıcı, yer paylaşımının kaybolmasını bekler ve ardından geri düğmesine basar. Derin bağlantı izlendikten sonra basılan ilk düğme d-pad seçme düğmesi olduğundan doğrudan geri gitme şartı geçerli değildir. Bunun yerine, normal uygulama geri yığını mantığı geçerlidir.
Geri düğmesine tekrar tekrar basıldığında kullanıcı, sonsuz döngü olmadan önce uygulamanın kök dizinine, ardından Google TV veya Android TV'ye yönlendirilmelidir. Daha fazla bilgi için Tahmin edilebilir geri düğmesi davranışı bölümüne bakın.
Gezinme mimarisi
İyi tanımlanmış bir gezinme mimarisi, kullanıcıların uygulamanızda nerede olduklarını ve farklı içeriklere nasıl erişeceklerini anlamalarına yardımcı olur. Gezinme tasarımının aşağıdaki yönlerini göz önünde bulundurun.
Sabit başlangıç hedefi
Kullanıcının başlatıcıdan uygulamayı başlattığında gördüğü ilk ekran, geri düğmesine bastıktan sonra başlatıcıya döndüğünde gördüğü son ekrandır.
Derin bağlantı, manuel gezinmeyi simüle eder
Derin bağlantı veya belirli bir hedefe manuel olarak gitme durumlarında kullanıcılar, hedefler arasında gezinmek ve başlangıç hedefine geri dönmek için geri düğmesini kullanabilir.
Başka bir uygulamadan bir uygulamaya derin bağlantı oluşturmak, manuel gezinmeyi simüle eder. Örneğin, kullanıcı Google TV'den doğrudan Moviestar uygulamasındaki bir ayrıntılar sayfasına giderse ve ardından geri düğmesine basarsa Moviestar uygulamasının ana sayfasına yönlendirilir.
Odaklanılabilir tüm öğelere giden yolu temizleme
Kullanıcıların, kullanıcı arayüzünüzde net bir şekilde gezinmesine izin verin. Bir kontrolü kullanmak için doğrudan bir yol yoksa kontrolü taşımayı düşünebilirsiniz.
Yapın.
Burada gösterilen arama işlemi gibi kontrolleri, diğer tıklanabilir öğelerle çakışmayan konumlara yerleştirin.
Yapmayın.
Ulaşılması zor yerlerde kontroller içeren düzenlerden kaçının. Burada gösterilen arama işlemine D-pad ile ulaşmak zor olabilir.
Eksen
Düzeninizi hem yatay hem de dikey eksenlerden yararlanacak şekilde tasarlayın. Her yöne belirli bir işlev atayarak büyük hiyerarşilerde hızlı bir şekilde gezinmenizi sağlar.
Yapılacaklar
Kategoriler dikey eksende, her kategorideki öğeler ise yatay eksende
gezilebilir.
Yapmayın.
Karmaşık ve iç içe yerleşim hiyerarşilerinden kaçının.