TV'de gezinme

TV cihazları, uygulamalar için sınırlı bir gezinme denetimi grubu sağlar. TV uygulamanız için etkili bir gezinme düzeni oluşturmak, bu sınırlı kontrolleri ve uygulamanızı çalıştırırken kullanıcıların sınırlamalarını kavramanıza bağlıdır. TV için Android uygulamanızı geliştirirken kullanıcının dokunmatik ekran yerine uzaktan kumanda düğmelerini kullanırken nasıl gezindiğine özellikle dikkat edin.

İlkeler

Amaç, gezinmenin kullanıcı arayüzüne hükmedmeden veya dikkati içerikten başka bir yere yönlendirmeden doğal ve tanıdık bir his vermesidir. Aşağıdaki ilkeler, TV uygulamalarında tutarlı ve sezgisel bir kullanıcı deneyimi için bir temel oluşturmaya yardımcı olur.

Verimli

İçeriğe erişimi hızlı ve kolay bir hale getirin. Kullanıcılar, minimum sayıda tıklama ile içeriğe hızlı bir şekilde erişmek ister. Bilgilerinizi en az sayıda ekranı gerektirecek şekilde düzenleyin.

Tahmin edilebilir

Gezinmeyi kullanıcılar için tahmin edilebilir hale getirmek amacıyla en iyi uygulamaları ve önerileri uygulayın. Gezinme kalıplarını gereksiz yere yeniden oluşturmayın. Bu durum karışıklığa ve öngörülemezliğe yol açar.

Sezgisel

Gezinmeyi, yaygın olarak benimsenmiş kullanıcı davranışlarını sorunsuz bir şekilde destekleyecek kadar basit hale getirin. Gereksiz gezinme katmanları ekleyerek içeriğinizi fazla karmaşık hale getirmeyin.

Kumandalar

Minimalist uzaktan kumandalardan karmaşık oyun kumandalarına kadar farklı tarzlarda kumandalar vardır. Tüm kumandalarda bir yön tuşları (D-pad) ile seç, ana sayfa ve geri düğmeleri bulunur. Diğer düğmeler modele göre değişir.

Örnek Uzaktan Kumanda
Şekil 1: TV uzaktan kumandası örneği.

D-pad
TV'deki birincil gezinme yöntemi yukarı, aşağı, sol ve sağ yön donanım düğmelerini içeren D-pad'dir. D-pad, odağı bir nesneden düğmeye basıldığı yönde en yakın nesneye aktarır.

Seçme düğmesi
Ekranda odaklanılan öğeyi seçer.

Ana sayfa düğmesi
Kullanıcıyı sistemin Ana ekranına yönlendirir.

Geri düğmesi
Kullanıcılara önceki görünüme geri dönme imkanı verir.

Mikrofon düğmesi
Google Asistan'ı veya ses girişini çağırır.

D-pad ile gezinme

Kullanıcılar TV cihazlarında D-pad veya ok tuşlarını kullanarak gezinirler. Bu kontrol türü, hareketi yukarı, aşağı, sola ve sağa doğru sınırlar. TV için optimize edilmiş iyi bir uygulama oluşturmak amacıyla kullanıcının bu sınırlı kontrolleri kullanarak uygulamanızda nasıl gezineceğini hızlı bir şekilde öğrenebileceği bir gezinme şeması sağlamanız gerekir.

Android çerçevesi, düzen öğeleri arasındaki yönsel gezinmeyi otomatik olarak işlediğinden genellikle uygulamanız için fazladan bir şey yapmanız gerekmez. Ancak, gezinme sorunlarını keşfetmek için bir D-pad denetleyiciyle navigasyonu kapsamlı bir şekilde test etmeniz gerekir.

Uygulamanızın navigasyon sisteminin TV cihazındaki bir D-pad ile düzgün çalışıp çalışmadığını test etmek için aşağıdaki yönergeleri izleyin:

  • D-pad kumandası olan bir kullanıcının ekrandaki tüm görünür denetimlere gidebildiğinden emin olun.
  • Odaklı kaydırma listeleri için D-pad'in yukarı ve aşağı düğmelerinin listeyi kaydırdığından ve seç düğmesinin 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 hâlâ kaydırıldığını doğrulayın.
  • Kontroller arasında geçişin basit ve tahmin edilebilir olduğundan emin olun.

Yönlü gezinmeyi değiştirme

Android çerçevesi, düzeninizdeki odaklanılabilir öğelerin göreli konumuna göre otomatik olarak bir yönlü gezinme şeması uygular. Uygulamanızda oluşturulan gezinme şemasını D-pad denetleyici kullanarak test edin. Testten sonra, kullanıcıların düzenlerinizde belirli bir şekilde hareket etmesini istediğinize karar verirseniz kontrolleriniz için açık yönsel 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ğı kaydırdığında odağın alınacağı bir sonraki görünümü tanımlar.
nextFocusLeft Kullanıcı sola gittiğinde odağın alınacağı bir sonraki görünümü tanımlar.
nextFocusRight Kullanıcı sağa gittiğinde odaklanılacak bir sonraki görünümü tanımlar.
nextFocusUp Kullanıcı yukarı gittiğinde odaklanılacak 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 değerine ayarlayın. Son denetimin odağı tekrar ilk kontrole yönlendirmesi için gezinme sırasını döngü olarak ayarladığınızdan emin olun.

Net bir odak noktası ve seçim sunun

Bir uygulamanın TV cihazlarındaki gezinme şemasının başarısı, kullanıcının hangi kullanıcı arayüzü öğesinin odakta olduğunu belirlemesinin ne kadar kolay olduğuna bağlıdır. Odaklanılan öğeyi ve dolayısıyla kullanıcının hangi öğe üzerinde işlem yapabileceği konusunda net bir gösterge sunmazsanız kullanıcılar hızla sinirlenip uygulamanızdan çıkabilir. Aynı nedenle, kullanıcıların uygulamanız başladıktan hemen sonra veya uygulama boşta kaldığında işlem yapabileceği bir öğeye odaklanılması her zaman önemlidir.

Uygulamanızın düzeninde ve uygulamanızda renk, boyut, animasyon veya bu özelliklerin bir kombinasyonunu kullanın. Böylece, kullanıcıların daha sonra gerçekleştirecekleri işlemleri kolayca belirlemelerine yardımcı olabilirsiniz. Uygulamanızın odak noktasını göstermek için tek tip bir şema kullanın.

Android, odaklanılmış ve seçili kontrollerin vurgulamalarını uygulamak için Çekilebilir durum listesi kaynakları sağlar. Aşağıdaki kod örneğinde, kullanıcının kontrole gidip düğmeyi seçtiğini belirtmek üzere düğme için görsel davranışın nasıl etkinleştirileceği gösterilmektedir:

<!-- res/drawable/button.xml -->
<?xml version="1.0" encoding="utf-8"?>
<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, bir Button öğesine çekilebilen önceki durum listesini uygular:

<Button
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:background="@drawable/button" />

Odaklanabilir ve seçilebilir denetimlerde, etraflarındaki vurguların net bir şekilde görülebilmesi için yeterli dolgu sağladığınızdan emin olun.

Geri düğmesiyle gezinme

Platformdaki uygulamalar arasında tutarlılık sağlamak için geri düğmesinin davranışının bu kurallara uyduğundan emin olun.

Tahmin edilebilir geri düğmesi davranışından yararlanın

Kolay ve tahmin edilebilir bir gezinme deneyimi oluşturmak için uzaktan kumandanın geri düğmesine basan kullanıcıları bir önceki hedefe yönlendirin.

Üst gezinme menüsünü kullanırken
Üst gezinme çubuğu kullanılırken gezinme akışını açıklayan resim
Sol gezinme menüsünü kullanırken
Sol gezinme tuşu kullanılırken gezinme akışını açıklayan bir resim

Kullanıcı bir menü öğesinden sayfanın ortasındaki bir karta gider ve ardından geri düğmesine basarsa sonuç, uygulamanın üst gezinmeyi mi yoksa sol gezinmeyi mi kullandığına bağlıdır:

  • Uygulama, üst gezinme menüsünü kullanır: Hızlı bir şekilde kaydırıp menüye odaklanmayı etkinleştirerek kullanıcıyı tekrar sayfanın başına götürün.
  • Uygulama sol gezinmeyi kullanıyor: Sol taraftaki menüyü etkinleştirin ve etkin durumdaki menü öğesine odaklanın.

Geri düğmesinin, onay ekranlarıyla veya sonsuz bir döngünün parçası olmadığından emin olun.

Kullanıcılara çıkmak isteyip istemediklerini soran bir iletişim kutusunu gösteren ekran görüntüsü

Şunu yapmayın:
Çıkış kapısından kaçının. Kullanıcıların onay olmadan uygulamadan çıkmasına izin verin.


Gezinme döngüsünü gösteren ekran görüntüsü

Şunu yapmayın:
Menüyü kapatma ve açma işlemlerinin olduğu sonsuz döngüye asla girmeyin. İdeal olarak, geri düğmesine basıldığında uygulamadan çıkılır. Çocuk profili gibi özel bir durum olmadığı sürece menüde çıkış düğmesi göstermeyin.

Yukarı veya geri düğmesi gösterme

Avuç içi cihazlardan farklı olarak, uzaktan kumandadaki geri düğmesi TV'de geri gitmek için kullanılır. Ekranda sanal geri düğmesi gösterilmesine gerek yoktur:

Ekranda yumuşak geri düğmesini gösteren ekran görüntüsü

Şunu yapmayın:

Gerekirse iptal düğmesi gösterin

Görünür işlemler yalnızca onaylayıcı, yıkıcı veya satın alma işlemleriyse önceki hedefe döndüren bir İptal düğmesinin bulunması iyi bir uygulamadır:

Ekranda kısmi iptal düğmesini gösteren ekran görüntüsü

Yapılması gerekenler.

Geri gezinmeyi uygula

Android çerçevesi genellikle D-pad'de olduğu gibi geri gezinmeyi iyi işler. Gezinme bileşenini kullanıyorsanız çeşitli gezinme grafiklerini destekleyebilirsiniz. Bazen, geri düğmesinin odağı uzun bir listenin başına sıfırlamasını sağlamak gibi bazı özel davranışlar uygulamanız gerekebilir.

FragmentActivity ve AppCompatActivity için temel sınıf olan ComponentActivity, getOnBackPressedDispatcher() çağrısıyla alabileceğiniz OnBackPressedDispatcher aracılığıyla geri düğmesinin davranışını kontrol etmenizi sağlar.

Daha fazla bilgi edinmek için Özel geri gezinme sağlama bölümüne bakın.

TV'de oynatma kontrolleri

Video oynatma, TV'deki en önemli özelliklerden biridir. Android TV'deki uygulamalardaki video oynatıcıların aynı şekilde davranması önemlidir. TV için oynatma kontrol kurallarına bakın.

Canlı sekmesinde gezinme

Canlı sekmesine entegre canlı TV feed'i olan uygulamalar, TV uygulaması kalite şartlarına uymanın yanı sıra aşağıdaki bölümlerde açıklandığı gibi sorunsuz oynatma ve doğrudan oynatma gereksinimlerini de karşılamalıdır.

Kesintisiz oynatma

Sorunsuz oynatma, Google TV ve Android TV'deki herhangi bir Canlı/Doğrusal kanal derin bağlantısına uyan uygulama içi davranışlar için geçerlidir.

Google TV ve Android TV'den Canlı/Doğrusal kanal derin bağlantısını tıklayan kullanıcılar, hedef uygulamadaki ekranları engellemeden veya geciktirmeden doğrudan kanal oynatmaya yönlendirilmelidir. Oturum açma akışlarına, kayıt akışlarına, marka bilinci oluşturma videolarına ve diğer gecikmelere izin verilmez.

Bununla birlikte, derin bağlantı hedef uygulamayı bir soğuk başlatma ile başlatırsa oynatmadan önceki bu başlatma gecikmesine izin verilir. Bu durumda, bir uygulama başlatma marka bilinci oluşturma videosuna veya animasyonuna da izin verilir. Böyle bir soğuk başlatma deneyiminin oturum başına bir kereden fazla gerçekleşme olasılığı düşüktür.

Ayrıca, derin bağlantılı kanalı izlemeye birkaç saniye sürüyorsa kanal ve/veya hizmet markasının gösterilmesine izin verilir. Ancak, kanalın yüklenmesi için gereken süre (ve uygulamadaki ortalama kanal yükleme sürelerine benzer) olmalıdır.

Kullanıcı oturumu kapalıysa veya abone değilse oturum açma ya da kaydolma akışını tamamlamak için ücretli bir kanalda oynatmayı engelleyebilirsiniz.

Tam Dönüş

Kullanıcılar Canlı sekmesindeki bir derin bağlantıdan bir uygulamayı başlattıktan sonra geri düğmesine bastığında, ne kadar zaman geçmiş olursa olsun tek bir tekrar basarak Canlı sekmesine geri dönmeleri gerekir. Bu doğrudan geri davranışı, Google TV ve Android TV'deki tüm Canlı sekmesi derin bağlantıları için gereklidir.

Yayındaki sekme derin bağlantıları, eklenen bir derin bağlantı parametresiyle ayırt edilir: ?exit_on_back=[true|false]. Uygulamalar, uygulamanın Canlı sekmesinden başlatılıp başlatılmadığını belirlemek için bu parametreyi ayrıştırmalıdır. exit_on_back, true ise uygulamaların doğrudan geri davranışını uygulaması gerekir.

Kullanıcı, derin bağlantıdan sonra ilk düğme basıldığında geri düğmesi dışında herhangi bir düğmeye basarsa doğrudan geri alma gereksiniminin geçerli olmadığını ve yalnızca standart geri düğmesi davranışının gerekli olduğunu unutmayın.

Örneğin, bir derin bağlantıyı izledikten sonra kullanıcının D-pad'in seçme düğmesine bastığını ve bu durumda kontrol yer paylaşımının görüntülendiğini varsayalım. Kullanıcı, yer paylaşımının kaybolmasını bekler ve ardından geri düğmesine basar. Derin bağlantıyı izledikten sonra basılan ilk düğme D-pad seçme düğmesi olduğundan, doğrudan geri alma şartı geçerli değildir. Bunun yerine normal uygulama geri yığını mantığı uygulanır.

Geri düğmesine art arda basıldığında kullanıcılar uygulamanın root dizinine ve ardından Google TV'ye veya Android TV'ye sonsuz döngü olmadan dönmelidir. Daha fazla bilgi için Tahmin edilebilir geri düğmesi davranışı bölümüne bakın.

Sabit başlangıç hedefi

Kullanıcının uygulamayı başlatıcıdan başlattığında gördüğü ilk ekran aynı zamanda 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.

İster derin bağlantı oluşturarak ister manuel olarak belirli bir hedefe gidin, kullanıcılar hedefler arasında tekrar başlangıç hedefine gitmek için geri düğmesini kullanabilir.

Bir uygulama içindeki ayrıntılar sayfasına derin bağlantıyı gösteren ekran görüntüleri.
 Geri düğmesine bastığınızda ilgili uygulamanın ana ekranına, tekrar geri düğmesine bastığınızda ise orijinal ekrana dönersiniz.

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 ayrıntılar sayfasına gidip geri düğmesine basarsa, Moviestar uygulamasının ana sayfasına yönlendirilir.

Odaklanabilir tüm öğelere giden yol

Kullanıcıların kullanıcı arayüzünüzde net bir şekilde gezinmesine izin verin. Kontrole ulaşmak için kullanabileceğiniz düz bir yol yoksa yerini değiştirmeyi düşünebilirsiniz.

Odaklanılabilir gezinme örneği

Yapılmalı.
Burada gösterilen arama işlemi gibi kontrolleri, diğer tıklanabilir öğelerle çakışmayan konumlara yerleştirin.

Odaklanılabilir gezinme örneği

Şunu yapmayın:
Erişilmesi zor yerlerde kontrol içeren sayfa düzenlerinden kaçının. Burada gösterilen arama işlemine ulaşmak D-pad ile kolay değildir.

Eksenler

Düzeninizi hem yatay hem de dikey eksenlerden yararlanacak şekilde tasarlayın. Her yöne belirli bir işlev vererek büyük hiyerarşilerde gezinmeyi hızlandırın.

Gezinme eksenleri örneği

Yapılması gerekenler.
Kategoriler dikey eksende gezinilebilir ve her bir kategorideki öğelere yatay eksende göz atabilirsiniz.

Gezinme eksenleri örneği

Şunu yapmayın:
Karmaşık ve iç içe yerleştirilmiş düzen hiyerarşilerinden kaçının.