TV düzenleri oluşturma

TV ekranı genellikle 3 metre uzaktan görüntülenir ve diğer Android cihaz ekranlarının çoğundan çok daha büyük olsa da TV ekranları, daha küçük bir cihaz ekranıyla aynı düzeyde ayrıntı ve renk sağlamaz. Bu faktörler, yararlı ve keyifli bir kullanıcı deneyimi oluşturmak için TV cihazlarını göz önünde bulundurarak uygulama düzenleri oluşturmanızı gerektirir.

Bu kılavuzda, TV uygulamaları için etkili düzenler oluşturmak üzere minimum gereksinimler ve uygulama ayrıntıları açıklanmaktadır.

Daha fazla bilgi için TV için tasarlama konusunu okuyun.

TV için düzen temaları kullanma

Android temaları, TV uygulamalarınızdaki düzenler için bir temel sağlayabilir. TV cihazında yayınlanması amaçlanan uygulama etkinliklerinizin görünümünü değiştirmek için bir tema kullanın. Bu bölümde hangi temaların kullanılacağı açıklanmaktadır.

Leanback teması

Leanback androidx kitaplığı, TV etkinlikleri için tutarlı bir görsel stil sağlayan Theme.Leanback temasını içerir. Bu temayı, AndroidX Leanback sınıflarıyla oluşturulmuş tüm TV uygulamaları için kullanmanızı öneririz. Aşağıdaki kod örneğinde bu temanın bir etkinliğe nasıl uygulanacağı gösterilmektedir:

<activity
  android:name="com.example.android.TvActivity"
  android:label="@string/app_name"
  android:theme="@style/Theme.Leanback">

Başlık Çubuğu teması yok

Başlık çubuğu, telefonlar ve tabletlerdeki Android uygulamaları için standart bir kullanıcı arayüzü öğesidir ancak TV uygulamaları için uygun değildir. AndroidX Leanback sınıflarını kullanmıyorsanız başlık çubuğunun görüntülenmesini önlemek için TV etkinliklerinize NoTitleBar temasını uygulayın. TV uygulama manifestinden alınan aşağıdaki kod örneğinde, başlık çubuğu görüntüsünü kaldırmak için bu temanın nasıl uygulanacağı gösterilmektedir:

<application>
  ...
  <activity
    android:name="com.example.android.TvActivity"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar">
    ...
  </activity>
</application>

AppCompat temaları

Android mobil uygulamalarında, Theme.AppCompat temalarından biriyle birlikte AppCompatActivity kullanımı çok yaygındır. Bu kombinasyon, cihazda çalışan Android sürümüyle ilgili endişe duymadan çekilebilir renklendirme gibi özellikleri kullanmanıza olanak tanır. Yalnızca Android TV'de çalışan bir uygulama geliştiriyorsanız AppCompatActivity kullanmanıza gerek yoktur. Çünkü uygulamanın etkinleştirdiği özellikler ya Android TV'de kullanılabilir ya da alakalı değildir.

Android mobil ile Android TV arasında ortak bir kod tabanına sahip uygulama oluşturuyorsanız tema nedeniyle bazı zorluklarla karşılaşabilirsiniz. AppCompatActivity ve çeşitli AppCompat widget'ları Theme.AppCompat kullanmanızı gerektirirken Leanback parçaları FragmentActivity ve Theme.Leanback kullanmanızı bekler.

Android mobil ve Android TV için aynı temel etkinliği kullanmanız veya AppCompatImageView gibi AppCompat widget'larına dayalı özel görünümleri kullanmak istiyorsanız Theme.AppCompat.Leanback temalarını kullanın. Bu temalar hem AppCompat temasını hem de Leanback'e özgü değerleri sağlar.

Theme.AppCompat.Leanback temalarını, diğer temalarda olduğu gibi özelleştirebilirsiniz. Örneğin, Leanback’in OnboardingSupportFragment öğesine özgü değerleri değiştirmek isterseniz aşağıdakine benzer bir şey yapın:

<style name="MyOnboarding" parent="Theme.AppCompat.Leanback.Onboarding">
    <item name="onboardingLogoStyle">@style/MyOnboardingLogoStyle</item>
    <item name="onboardingPageIndicatorStyle">@style/MyOnboardingPageIndicatorStyle</item>
</style>

Temel TV düzenleri oluşturma

TV cihazlarının düzenleri, büyük ekranlarda kullanılabilir ve etkili olmalarını sağlamak için bazı temel yönergelere uymalıdır. TV ekranları için optimize edilmiş düzenler oluşturmak için aşağıdaki ipuçlarını uygulayın:

  • Yatay yönde düzenler oluşturun. TV ekranları her zaman yatay modda görüntülenir.
  • Ekrandaki gezinme denetimlerini ekranın sol veya sağ tarafına yerleştirin ve içerik için dikey alan bırakın.
  • Parçalar kullanarak bölümlere ayrılmış kullanıcı arayüzleri oluşturun. Yatay ekran alanından daha iyi yararlanmak için ListView yerine GridView gibi görüntüleme gruplarını kullanın.
  • Görünümleri düzenlemek için RelativeLayout veya LinearLayout gibi görüntüleme gruplarını kullanın. Bu yaklaşım sayesinde sistem, görüntülerin konumunu TV ekranının boyutuna, hizalamasına, en boy oranına ve piksel yoğunluğuna göre ayarlayabilir.
  • Kullanıcı arayüzünün dağınık olmasını önlemek için düzen kontrolleri arasına yeterli kenar boşluğu ekleyin.

Fazla tarama

TV standartlarındaki evrim ve izleyicilere her zaman tam ekran resim sunma isteği nedeniyle TV için Layouts bazı benzersiz gereksinimlere sahiptir. Bu nedenle TV cihazları, tüm ekranın doldurulmasını sağlamak için uygulama düzeninin dış kenarını kırpabilir. Bu davranış genellikle fazla tarama olarak adlandırılır.

Ekran öğelerini, tarama güvenli alanı içinde her zaman kullanıcı tarafından görülebilecek şekilde konumlandırın. Bir düzene sol ve sağ kenarlarda% 5, üst ve alt kenarlarda 27 dp'lik kenar boşluğu eklemek düzendeki ekran öğelerinin fazla tarama güvenli alanda yer almasını sağlar.

Kullanıcının doğrudan etkileşimde bulunmadığı arka plan ekranı öğeleri ayarlamayın veya fazla tarama güvenli alanına kırpmayın. Bu yaklaşım, arka plan ekranı öğelerinin tüm ekranlarda doğru görünmesini sağlar.

Aşağıdaki örnekte, arka plan öğeleri içerebilen ve% 5 kenar boşluğuna sahip olan ve fazla tarama güvenli alanı içinde öğeler içerebilen iç içe yerleştirilmiş bir alt düzen bulunabilen bir kök düzeni gösterilmektedir:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   >

   <!-- Screen elements that can render outside the overscan safe area go here -->

   <!-- Nested RelativeLayout with overscan-safe margin -->
   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:layout_marginTop="27dp"
       android:layout_marginBottom="27dp"
       android:layout_marginLeft="48dp"
       android:layout_marginRight="48dp">

      <!-- Screen elements that need to be within the overscan safe area go here -->

   </RelativeLayout>
</RelativeLayout>

Dikkat: BrowseFragment gibi AndroidX Leanback sınıflarını veya ilgili widget'ları kullanıyorsanız düzeninize fazla tarama kenar boşlukları uygulamayın. Bu düzenler zaten fazla taramaya karşı güvenli kenar boşlukları içerir.

Kullanılabilir metinler ve denetimler oluşturun

TV uygulamanızdaki metinleri ve denetimleri uzaktan görmek için aşağıdaki ipuçlarını uygulayın:

  • Metni kullanıcıların kolayca tarayabileceği küçük parçalara ayırın.
  • Koyu arka plan üzerinde açık renk metin kullanın. Bu stil, TV'de daha kolay okunur.
  • Hem dar hem de geniş fırçalara sahip hafif yazı tiplerinden veya yazı tiplerinden kaçının. Okunabilirliği artırmak için basit sans-serif yazı tiplerini ve kenar yumuşatma özelliğini kullanın.
  • Android'in standart yazı tipi boyutlarını kullanın:
    <TextView
          android:id="@+id/atext"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:gravity="center_vertical"
          android:singleLine="true"
          android:textAppearance="?android:attr/textAppearanceMedium"/>
    
  • Tüm görünüm widget'larınızın, ekrandan 3 metre uzakta oturan bir kişi tarafından görülebilecek kadar büyük olmasını sağlayın. Bunu yapmanın en iyi yolu, mutlak boyutlandırma yerine düzene göre boyutlandırma, mutlak piksel birimleri yerine yoğunluktan bağımsız piksel (dp) birimleri kullanmaktır. Örneğin, widget'ın genişliğini ayarlamak için piksel ölçümü yerine wrap_content, widget'ın kenar boşluğunu ayarlamak için de px değerleri yerine dp değerleri kullanın.

Yoğunluktan bağımsız pikseller ve daha büyük ekran boyutlarına uygun bina düzenleri hakkında daha fazla bilgi için Ekran uyumluluğuna genel bakış bölümüne bakın.

TV için düzen kaynaklarını yönetme

Diğer tüm Android cihazlarda olduğu gibi TV'ler de farklı ekran boyutlarına sahiptir ve 720p, 1080p ve 4K dahil ancak bunlarla sınırlı olmamak üzere farklı çözünürlükleri destekler. Uygulamanızın farklı ekran boyutlarını desteklediğinden emin olun.

Farklı ekran boyutları ve çözünürlükleri farklı piksel yoğunluklarına sahiptir. Kullanıcı arayüzünüzün ekran boyutları, çözünürlük ve piksel yoğunluklarındaki görünümünü korumak için, kullanıcı arayüzü ölçümlerini piksel yerine yoğunluktan bağımsız pikseller (dp) kullanarak tanımlayın. Farklı TV paneli çözünürlükleri için ekran piksel yoğunluğu aşağıda özetlenmiştir.

Panel çözünürlüğü Ekran piksel yoğunluğu
720p tvdpi
1080 xhdpi
4K xxxhdpi
Daha fazla bilgi için Farklı piksel yoğunluklarını destekleme bölümüne bakın.

Büyük ekranlara ilişkin düzenleri ve kaynakları optimize etme hakkında daha fazla bilgi için Ekran uyumluluğuna genel bakış konusuna bakın.

Kaçınılması gereken düzen kalıpları

TV cihazlarında iyi çalışmayan düzenler oluşturmaya yönelik birkaç yaklaşım vardır. TV için düzen geliştirirken kaçınmanız gereken bazı kullanıcı arayüzü yaklaşımlarını aşağıda bulabilirsiniz.

  • Telefon veya tablet düzenlerini yeniden kullanma: Bir telefon ya da tablet uygulamasındaki düzenleri değişiklik yapmadan yeniden kullanmayın. Diğer Android cihazlar form faktörleri için oluşturulan düzenler, TV cihazları için çok uygun değildir ve TV'de çalışacak şekilde basitleştirilmelidir.
  • ActionBar kullanımı: İşlem çubuklarının telefonlarda ve tabletlerde kullanılması önerilse de TV arayüzü için uygun değildir. Uzaktan kumandayla bu tür bir menüde gezinmenin zorluğu nedeniyle TV uygulamalarında işlem çubuğu seçenekler menüsü veya herhangi bir açılan menü kullanılması önerilmez.
  • ViewPager kullanımı: Ekranlar arasında kaydırma özelliği telefonda veya tablette harika performans gösterebilir. Ancak bunu TV'de denemeyin!

TV'ye uygun düzenler tasarlama hakkında daha fazla bilgi için TV tasarım kılavuzuna bakın.

Büyük bit eşlemleri işleme

TV cihazlarının da tıpkı diğer Android cihazlar gibi sınırlı miktarda bellek kapasitesi vardır. Uygulama düzeninizi çok yüksek çözünürlüklü görüntülerle derler veya uygulamanızı çalıştırırken çok sayıda yüksek çözünürlüklü resim kullanırsanız kısa sürede bellek sınırlarına ulaşabilir ve bellek hatalarına neden olabilir. Çoğu durumda uygulamanızda bit eşlemleri getirmek, kodunu çözmek ve görüntülemek için Glide kitaplığını kullanmanızı öneririz. Bit eşlemlerle çalışırken en iyi performansı elde etme hakkında daha fazla bilgi için genel Android grafikleriyle ilgili en iyi uygulamalarımıza bakın.

Etkili reklamcılık sağlama

Oturma odası ortamında, tam ekran görüntülenen ve 30 saniye içinde kapatılabilen video reklam çözümlerini kullanmanızı öneririz. Android TV'deki kapatma düğmeleri ve tıklamalar gibi reklam işlevlerine, dokunma yerine D-pad ile erişilebilmelidir.

Android TV, web tarayıcısı sağlamaz. Reklamlarınız bir web tarayıcısı başlatmayı denememeli veya Android TV cihazları için onaylanmamış Google Play Store içeriğine yönlendirmemelidir.

Not: Sosyal medya hizmetlerine giriş yapmak için WebView sınıfını kullanabilirsiniz.