Uygulamanızı ilk kez kullanan bir kullanıcıya uygulamanızdan en iyi şekilde nasıl yararlanacağını göstermek için Uygulama başlatılırken ilk katılım bilgileri. İlk katılımla ilgili bazı örnekleri burada bulabilirsiniz bilgi:
- Bir kullanıcı dönüşüm gerçekleştirdiğinde hangi kanalların mevcut olduğuyla ilgili Kullanıcı bir kanal uygulamasına eriştiğinde
- Uygulamanızdaki dikkate değer özelliklere dikkat çekin.
- Kullanıcıların ilk olarak izlemesi gereken adımları veya önerilen adımları ilk kez kullanıyor olmanız gerekir.
androidx.leanback kitaplığı şunları sağlar:
Şu ders için OnboardingSupportFragment
ders:
ilk kez kullananların bilgilerini sunmak. Bu kılavuzda,
OnboardingSupportFragment
sınıf gösterilecek
uygulama ilk kez başlatıldığında gösterilen tanıtım bilgilerini
gerekir.
OnboardingSupportFragment
, TV kullanıcı arayüzünü kullanır
bilgileri TV kullanıcı arayüzü stillerine uygun şekilde sunmaya yönelik en iyi uygulamalar
TV cihazlarında gezinmesi kolay.
OnboardingSupportFragment
her kullanım alanı için uygun değildir.
Eklemeniz gerektiğinde OnboardingSupportFragment
kullanmayın
Düğmeler ve alanlar gibi kullanıcı girişi gerektiren kullanıcı arayüzü öğeleri.
Ayrıca, kullanıcının gerçekleştireceği görevler için OnboardingSupportFragment
öğesini kullanmayın
gerekir. Son olarak, çok sayfalı bir kullanıcı arayüzü sunmanız gerekiyorsa
kontrol etmek isterseniz
GuidedStepSupportFragment
OnboardingSupportFragment ekleyin
OnboardingSupportFragment
eklemek için
bir sınıf kullanın.
OnboardingSupportFragment
sınıfı. Ekle
bu parçayı, etkinliğin düzen XML'sini kullanarak veya bir etkinliğe
daha fazla bilgi edindiniz. Etkinliğin veya
parçası,
Theme_Leanback_Onboarding
,
Temaları özelleştirme bölümünde açıklandığı gibi.
Hesabınızın onCreate()
ana etkinliği, uygulamanın
startActivity()
şuna işaret eden bir Intent
ile:
OnboardingSupportFragment
cihazınızın ana etkinliği.
Böylece proje boyunca
OnboardingSupportFragment
şu şekilde görünüyor:
uygulamanız başlar başlamaz.
Ekibin
OnboardingSupportFragment
yalnızca
Kullanıcı uygulamanızı ilk kez başlattığında,
SharedPreferences
nesne
kullanıcının sayfayı daha önce görüntüleyip görüntülemediğini
OnboardingSupportFragment
Boole tanımlama
kullanıcı sayfayı görüntülemeyi bitirdiğinde true olarak değişen değer
OnboardingSupportFragment
Kontrol et
ana etkinliğinizde bu değeri
onCreate()
yöntemini kullanarak yalnızca
Aşağıdaki durumlarda OnboardingSupportFragment
ana etkinliği
değer false'tur.
Aşağıdaki örnekte,onCreate()
SharedPreferences
değeri ve doğru değerine ayarlanmazsa
OnboardingSupportFragment
göstermek için startActivity()
:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) PreferenceManager.getDefaultSharedPreferences(this).apply { // Check if we need to display our OnboardingSupportFragment if (!getBoolean(MyOnboardingSupportFragment.COMPLETED_ONBOARDING_PREF_NAME, false)) { // The user hasn't seen the OnboardingSupportFragment yet, so show it startActivity(Intent(this@OnboardingActivity, OnboardingActivity::class.java)) } } }
Java
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); // Check if we need to display our OnboardingSupportFragment if (!sharedPreferences.getBoolean( MyOnboardingSupportFragment.COMPLETED_ONBOARDING_PREF_NAME, false)) { // The user hasn't seen the OnboardingSupportFragment yet, so show it startActivity(new Intent(this, OnboardingActivity.class)); } }
Kullanıcı sayfayı görüntüledikten sonra
OnboardingSupportFragment
, görüntülendi olarak işaretleyin
(SharedPreferences
nesnesini kullanarak) Bunu yapmak için,
onFinishFragment()
.
OnboardingSupportFragment
içinde SharedPreferences
ayarlayın
değerini "true" (doğru) olarak ayarlayın:
Kotlin
override fun onFinishFragment() { super.onFinishFragment() // User has seen OnboardingSupportFragment, so mark our SharedPreferences // flag as completed so that we don't show our OnboardingSupportFragment // the next time the user launches the app PreferenceManager.getDefaultSharedPreferences(context).edit().apply { putBoolean(COMPLETED_ONBOARDING_PREF_NAME, true) apply() } }
Java
@Override protected void onFinishFragment() { super.onFinishFragment(); // User has seen OnboardingSupportFragment, so mark our SharedPreferences // flag as completed so that we don't show our OnboardingSupportFragment // the next time the user launches the app SharedPreferences.Editor sharedPreferencesEditor = PreferenceManager.getDefaultSharedPreferences(getContext()).edit(); sharedPreferencesEditor.putBoolean( COMPLETED_ONBOARDING_PREF_NAME, true); sharedPreferencesEditor.apply(); }
OnboardingSupportFragment sayfaları ekleme
OnboardingSupportFragment
İçeriği sıralı bir dizi sayfada görüntüler.
OnboardingSupportFragment
, aşağıdakileri tanımlamanız gerekir:
ilk katılım sayfaları. Her sayfanın bir başlığı, açıklaması ve
Resim veya animasyon içerebilen birkaç alt görünüm.
Şekil 2'de, özelleştirilebilir sayfayı işaretleyen açıklama metinleri içeren örnek bir sayfa gösterilmektedir
OnboardingSupportFragment
öğeleri
yardımcı olabilir. Sayfa öğeleri şunlardır:
- Sayfa başlığı.
- Sayfa açıklaması.
- Sayfa içeriği görünümü. Bu örnekte, gri bir kutu içinde basit yeşil bir onay işareti yer alır. Bu görünüm isteğe bağlıdır. Sayfa ayrıntılarını göstermek için bu görünümü kullanın. Örneğin, eğitime sayfada açıklanan uygulama özelliğini vurgulayan bir ekran görüntüsü ekleyin.
- Sayfanın arka plan görünümü. Bu örnekte, basit bir mavi gradyan. Bu görünüm her zaman sayfadaki diğer görünümlerin arkasında oluşturulur. Bu görünüm isteğe bağlıdır.
- Sayfanın ön planı görünümü (bu örnekte logo). Bu görünüm her zaman oluşturulur diğer tüm görüntülemelerin önüne geçirin. Bu görünüm isteğe bağlıdır.
İlk olarak OnboardingSupportFragment
oluşturuldu
veya üst etkinliğe ekli (sistem istekler sayfası olarak)
parçanın görünümünü oluşturduğunda bu bilgileri saklar. Sayfayı ilk kullanıma hazırlayabilirsiniz
içindeki bilgileri sınıf oluşturucunuzdaki veya bir geçersiz kılmanın
onAttach()
Sayfa bilgileri sağlayan aşağıdaki yöntemlerin her birini geçersiz kıl ekleme:
getPageCount()
,OnboardingSupportFragment
.getPageTitle()
, istenen sayfa numarasının başlığını döndürür.getPageDescription()
, istenen sayfanın açıklamasını döndürür sayı.
İsteğe bağlı alt görünümler sağlamak için aşağıdaki yöntemlerin her birini geçersiz kılın resim veya animasyon görüntülemek için:
onCreateBackgroundView()
. şunu döndürür:View
arka plan görünümü olarak ayarlamak veya arka plan görünümü gerekli değilse null ayarlamak için "create" değerini kullanabilirsiniz.onCreateContentView()
. şunu döndürür:View
"create" değerini kullanabilirsiniz.onCreateForegroundView()
. şunu döndürür:View
"create" değerini kullanabilirsiniz.
Sistem, oluşturduğunuz View
öğesini sayfaya ekler
kullanır. Aşağıdaki örnek geçersiz kılmalar
onCreateContentView()
ve bir
ImageView
:
Kotlin
private lateinit var contentView: ImageView ... override fun onCreateContentView(inflater: LayoutInflater?, container: ViewGroup?): View? { return ImageView(context).apply { scaleType = ImageView.ScaleType.CENTER_INSIDE setImageResource(R.drawable.onboarding_content_view) setPadding(0, 32, 0, 32) contentView = this } }
Java
private ImageView contentView; ... @Override protected View onCreateContentView(LayoutInflater inflater, ViewGroup container) { contentView = new ImageView(getContext()); contentView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); contentView.setImageResource(R.drawable.onboarding_content_view); contentView.setPadding(0, 32, 0, 32); return contentView; }
İlk logo ekranı ekleme
OnboardingSupportFragment
cihazınız başlayabilir
uygulamanızı tanıtan isteğe bağlı bir logo ekranıyla birlikte. Görüntülü Reklam Ağı'nda
Drawable
telefon görüşmesi yapın,
setLogoResourceId()
Drawable
numaralı cihazınızın kimliği
onCreate()
içinde
OnboardingSupportFragment
yönteminiz.
Sistem görünür hale gelir ve kısa bir süre için
Drawable
, ardından Drawable
soluklaşır
görüntülemeden önce OnboardingSupportFragment
sayfanızın ilk sayfasını görüntülemenizi öneririz.
Logo ekranınız için
setLogoResourceId()
aranıyor, geçersiz kıl
onCreateLogoAnimation()
ve bir Animator
döndür
nesnesini tanımlayın:
Kotlin
public override fun onCreateLogoAnimation(): Animator = AnimatorInflater.loadAnimator(context, R.animator.onboarding_logo_screen_animation)
Java
@Override public Animator onCreateLogoAnimation() { return AnimatorInflater.loadAnimator(getContext(), R.animator.onboarding_logo_screen_animation); }
Sayfa animasyonlarını özelleştirme
Sistem, sayfanızın ilk sayfasını görüntülerken varsayılan animasyonları kullanır.
OnboardingSupportFragment
ve kullanıcının
kullanıcı farklı bir sayfaya gider. Bu animasyonları aşağıdakileri yaparak özelleştirebilirsiniz:
geçersiz kılma yöntemlerini
OnboardingSupportFragment
İlk sayfanızda görünen animasyonu özelleştirmek için
geçersiz kılma
onCreateEnterAnimation()
.
Animator
değerini döndürür.
Aşağıdaki örnekte, içerik görünümünü ölçeklendiren bir Animator
oluşturulur
yatay olarak:
Kotlin
override fun onCreateEnterAnimation(): Animator = ObjectAnimator.ofFloat(contentView, View.SCALE_X, 0.2f, 1.0f) .setDuration(ANIMATION_DURATION)
Java
@Override protected Animator onCreateEnterAnimation() { Animator startAnimator = ObjectAnimator.ofFloat(contentView, View.SCALE_X, 0.2f, 1.0f).setDuration(ANIMATION_DURATION); return startAnimator; }
Kullanıcı farklı bir sayfaya gittiğinde kullanılan animasyonu özelleştirmek için
geçersiz kılma
onPageChanged()
onPageChanged()
yönteminizde Animator
nesne oluşturun
önceki sayfayı kaldırıp sonraki sayfayı görüntüleyen, bunları bir
AnimatorSet
ve seti oynayın. Aşağıdakiler
örneği, önceki sayfayı kaldırmak için bir belirme animasyonu kullanır,
içerik görüntüleme resmi yapar ve sonraki sayfayı görüntülemek için kararma animasyon kullanır:
Kotlin
override fun onPageChanged(newPage: Int, previousPage: Int) { // Create a fade-out animation for previousPage and, once // done, swap the contentView image with the next page's image val fadeOut = ObjectAnimator.ofFloat(mContentView, View.ALPHA, 1.0f, 0.0f) .setDuration(ANIMATION_DURATION) .apply { addListener(object : AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator) { mContentView.setImageResource(pageImages[newPage]) } }) } // Create a fade-in animation for nextPage val fadeIn = ObjectAnimator.ofFloat(mContentView, View.ALPHA, 0.0f, 1.0f) .setDuration(ANIMATION_DURATION) // Create AnimatorSet with fade-out and fade-in animators and start it AnimatorSet().apply { playSequentially(fadeOut, fadeIn) start() } }
Java
@Override protected void onPageChanged(final int newPage, int previousPage) { // Create a fade-out animation for previousPage and, once // done, swap the contentView image with the next page's image Animator fadeOut = ObjectAnimator.ofFloat(mContentView, View.ALPHA, 1.0f, 0.0f).setDuration(ANIMATION_DURATION); fadeOut.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { mContentView.setImageResource(pageImages[newPage]); } }); // Create a fade-in animation for nextPage Animator fadeIn = ObjectAnimator.ofFloat(mContentView, View.ALPHA, 0.0f, 1.0f).setDuration(ANIMATION_DURATION); // Create AnimatorSet with fade-out and fade-in animators and start it AnimatorSet set = new AnimatorSet(); set.playSequentially(fadeOut, fadeIn); set.start(); }
Görüntülü Reklam Ağı kampanyası oluşturma hakkında
Animator
nesne ve
AnimatorSet
nesne, bkz.
Mülk Animasyonuna Genel Bakış.
Temaları özelleştirin
Tüm OnboardingSupportFragment
uygulama,
Theme_Leanback_Onboarding
teması
veya Theme_Leanback_Onboarding
öğesinden devralan bir tema. Ayarlayın:
Aşağıdakilerden birini yaparak OnboardingSupportFragment
için bir tema oluşturabilirsiniz:
- Şunu kullanmak için
OnboardingSupportFragment
üst etkinliğini ayarlayın: ekleyebilirsiniz. Aşağıdaki örnekte, kullanılacak bir etkinliğin nasıl ayarlanacağı Uygulama manifestindekiTheme_Leanback_Onboarding
:<activity android:name=".OnboardingActivity" android:enabled="true" android:exported="true" android:theme="@style/Theme.Leanback.Onboarding"> </activity>
-
Ebeveyn etkinliğinde temayı ayarlamak için
LeanbackOnboardingTheme_onboardingTheme
. özelliğini kullanarak yeniden gönderin. Bu özelliği başka bir özelliğe yönlendirin yalnızcaOnboardingSupportFragment
nesnelerin neler olduğunu öğrendik. Etkinliğinizde zaten istemediğiniz bir özel tema varsaOnboardingSupportFragment
stilden başka birine dokunun görüntüleme sayısı. - Geçersiz kıl
onProvideTheme()
ve istediğiniz temayı döndürün. Aşağıdaki durumlarda bu yaklaşımı kullanın: birden fazla etkinlikOnboardingSupportFragment
. veya ebeveyn etkinliği istenen temayı kullanamıyorsa. Aşağıdaki örnek,onProvideTheme()
değerini geçersiz kılar ve şu sonucu geçersiz kılar:Theme_Leanback_Onboarding
:Kotlin
override fun onProvideTheme(): Int = R.style.Theme_Leanback_Onboarding
Java
@Override public int onProvideTheme() { return R.style.Theme_Leanback_Onboarding; }