Açıklamalı adım ekle

Compose ile daha iyi hizmet verin
Android TV OS için Jetpack Compose'u kullanarak minimum kodla etkileyici kullanıcı arayüzleri oluşturun.

Uygulamanızda kullanıcılar için çok adımlı görevler olabilir. Örneğin, uygulamanızın ek içerik satın alarak, karmaşık yapılandırma ayarı yaparak veya sadece kararı onaylamaktır. Tüm bu görevler, kullanıcılara en az bir sıralı ya da kararlar almak anlamına gelir.

androidx.leanback kitaplığı, çok adımlı kullanıcı görevlerini uygulamak için sınıflar sağlar. Bu sayfa nasıl kullanılacağını anlatır. GuidedStepSupportFragment sınıf bir görevi tamamlamak için bir dizi kararda kullanıcıya rehberlik etmektir. GuidedStepSupportFragment. çok adımlı görevlerin TV cihazlarında anlaşılmasını ve gezinmesini kolaylaştırmak için TV kullanıcı arayüzü en iyi uygulamalarını kullanır.

Bir adımla ilgili ayrıntıları girin

GuidedStepSupportFragment, bir dizideki tek bir adımı temsil eder bir dizi adımdan oluşur. Görsel olarak, mümkün olan işlemlerin veya kararların listesidir.

Şekil 1. Açıklamalı adım örneği.

Çok adımlı görevinizdeki her adım için GuidedStepSupportFragment ve aşağıdakilerle ilgili bağlam bilgileri sağlayın: Kullanıcının atabileceği adım ve eylemler. Geçersiz kıl onCreateGuidance(). ve yeni bir Bağlam içeren GuidanceStylist.Guidance bilgileri (ör. adım başlığı, açıklama ve simge) aşağıdaki örnekte gösterildiği gibi:

Kotlin

override fun onCreateGuidance(savedInstanceState: Bundle?): GuidanceStylist.Guidance {
    return GuidanceStylist.Guidance(
            getString(R.string.guidedstep_first_title),
            getString(R.string.guidedstep_first_description),
            getString(R.string.guidedstep_first_breadcrumb),
            activity.getDrawable(R.drawable.guidedstep_main_icon_1)
    )
}

Java

@Override
public GuidanceStylist.Guidance onCreateGuidance(Bundle savedInstanceState) {
    String title = getString(R.string.guidedstep_first_title);
    String breadcrumb = getString(R.string.guidedstep_first_breadcrumb);
    String description = getString(R.string.guidedstep_first_description);
    Drawable icon = getActivity().getDrawable(R.drawable.guidedstep_main_icon_1);
    return new GuidanceStylist.Guidance(title, description, breadcrumb, icon);
}

GuidedStepSupportFragment alt sınıfını istediğiniz gruba ekleyin telefon ederek etkinlik GuidedStepSupportFragment.add() etkinliğinizin onCreate() yönteminde.

Etkinliğiniz yalnızca GuidedStepSupportFragment içeriyorsa nesneler için GuidedStepSupportFragment.addAsRoot() kullanın (add() yerine) ilk GuidedStepSupportFragment öğesini ekleyin. Kullanım addAsRoot(), kullanıcının izleme sırasında TV uzaktan kumandasındaki Geri düğmesine basmasını sağlar. hem ilk GuidedStepSupportFragment hem de GuidedStepSupportFragment ve üst etkinlik kapanıyor.

Not: GuidedStepSupportFragment nesne programatik olarak, değil.

Kullanıcı işlemlerini oluşturma ve işleme

Geçersiz kılarak kullanıcı işlemleri ekleyin onCreateActions() Geçersiz kılmanızda her biri için yeni bir GuidedAction ekleyin işlem öğesini seçin ve işlem dizesini, açıklamasını ve kimliğini girin. Tekliflerinizi otomatikleştirmek ve optimize etmek için Yeni işlemler eklemek için GuidedAction.Builder.

Kotlin

override fun onCreateActions(actions: MutableList<GuidedAction>, savedInstanceState: Bundle?) {
    super.onCreateActions(actions, savedInstanceState)

    // Add "Continue" user action for this step
    actions.add(GuidedAction.Builder()
            .id(CONTINUE)
            .title(getString(R.string.guidedstep_continue))
            .description(getString(R.string.guidedstep_letsdoit))
            .hasNext(true)
            .build())
    ...

Java

@Override
public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) {
    // Add "Continue" user action for this step
    actions.add(new GuidedAction.Builder()
           .id(CONTINUE)
           .title(getString(R.string.guidedstep_continue))
           .description(getString(R.string.guidedstep_letsdoit))
           .hasNext(true)
           .build());
...

İşlemler tek satırlık seçimlerle sınırlı değildir. Elektronik tablo kullanarak yapılmış oluşturabileceğiniz işlemler:

  • Ayarlayarak kullanıcı seçenekleri hakkında ek bilgi sağlamak için bir bilgi etiketi işlemi ekleyin infoOnly(true) infoOnly doğru değerine ayarlandığında kullanıcılar işlemi seçemez.
  • Şu ayarı kullanarak düzenlenebilir metin işlemi ekleyin: editable(true) editable Doğru değerine ayarlandığında, kullanıcı uzaktan kumanda veya bağlı klavye bulunur. Geçersiz kıl Kullanıcının girdiği değiştirilmiş metni almak için onGuidedActionEditedAndProceed(). Kullanıcının girişi ne zaman iptal ettiğini öğrenmek için onGuidedActionEditCanceled() politikasını da geçersiz kılabilirsiniz.
  • İşaretlenebilir radyo düğmesi gibi çalışan bir dizi işlem eklemek için checkSetId(). işlemleri bir grup halinde gruplandırmak için ortak bir kimlik değeri ile. Aynı listede yer alan ve aynı onay kümesi kimlikleri bağlı olarak kabul edilir. Kullanıcı bu kümedeki işlemlerden birini seçtiğinde işlem işaretlenir ve diğer tüm işlemlerin işareti kaldırılır.
  • Şu tuşu kullanarak bir tarih seçici işlem ekleyin: GuidedDatePickerAction.Builder. yerine onCreateActions() içinde GuidedAction.Builder. Geçersiz kıl Kullanıcının girdiği değiştirilme tarihi değerini almak için onGuidedActionEditedAndProceed().
  • Kullanıcının genişletilmiş bir listeden seçim yapabilmesi için alt işlemleri kullanan bir işlem tercih edebilirsiniz. Alt işlemler, Alt işlem ekleme bölümünde açıklanmıştır.
  • İşlemler listesinin sağ tarafında görünen ve kolayca kullanabileceğiniz bir düğme işlemi ekleyin erişilebilir. Düğme işlemleri Ekle düğmesi işlemler bölümüne bakın.

Bir işlem seçmeye dair görsel bir gösterge de yeni bir adımdır. hasNext(true)

Ayarlayabileceğiniz farklı tüm özellikler için bkz. GuidedAction

İşlemlere yanıt vermek için geçersiz kılın onGuidedActionClicked() ve iletilen dosyayı işleyin. GuidedAction. Seçilen eylemi belirlemek için GuidedAction.getId() inceleniyor.

Alt işlem ekle

Bazı işlemler, kullanıcıya ek seçenekler sunmanızı gerektirebilir. CEVAP GuidedAction, aşağıdakiler için bir liste belirtebilir alt işlemler menüsü olarak görüntülenen alt eylemler.

Şekil 2. Açıklamalı adım alt işlemleri.

Alt işlem listesi normal işlemler veya radyo düğmesi işlemleri içerebilir, ancak düzenleme metin işlemleri değil, tarih seçici veya düzenlenebilir metin işlemleri değil. Ayrıca, bir alt işlemin kendi bir alt işlem kümesidir.

Alt işlemler eklemek için önce bir alt eylem listesi oluşturun Aşağıdaki örnekte gösterildiği gibi, alt işlem görevi gören GuidedAction nesne:

Kotlin

subActions.add(GuidedAction.Builder()
        .id(SUBACTION1)
        .title(getString(R.string.guidedstep_subaction1_title))
        .description(getString(R.string.guidedstep_subaction1_desc))
        .build())
...

Java

List<GuidedAction> subActions = new ArrayList<GuidedAction>();
subActions.add(new GuidedAction.Builder()
       .id(SUBACTION1)
       .title(getString(R.string.guidedstep_subaction1_title))
       .description(getString(R.string.guidedstep_subaction1_desc))
       .build());
...

onCreateActions() alanında üst düzey bir Gösterilen GuidedAction alt işlem listesi açılır:

Kotlin

    ...
    actions.add(GuidedAction.Builder()
            .id(SUBACTIONS)
            .title(getString(R.string.guidedstep_subactions_title))
            .description(getString(R.string.guidedstep_subactions_desc))
            .subActions(subActions)
            .build())
    ...

Java

@Override
public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) {
...
    actions.add(new GuidedAction.Builder()
           .id(SUBACTIONS)
           .title(getString(R.string.guidedstep_subactions_title))
           .description(getString(R.string.guidedstep_subactions_desc))
           .subActions(subActions)
           .build());
...
}

Son olarak, onSubGuidedActionClicked():

Kotlin

override fun onSubGuidedActionClicked(action: GuidedAction): Boolean {
    // Check for which action was clicked and handle as needed
    when(action.id) {
        SUBACTION1 -> {
            // Subaction 1 selected
        }
    }
    // Return true to collapse the subactions menu or
    // false to keep the menu expanded
    return true
}

Java

@Override
public boolean onSubGuidedActionClicked(GuidedAction action) {
   // Check for which action was clicked and handle as needed
   if (action.getId() == SUBACTION1) {
       // Subaction 1 selected
   }
   // Return true to collapse the subactions menu or
   // false to keep the menu expanded
   return true;
}

Düğme işlemleri ekleme

Açıklamalı adımınızda kapsamlı bir işlem listesi varsa kullanıcıların listeyi kaydırması gerekebilir. en sık kullanılan işlemlere erişmeyi deneyin. Verileri ayırmak için düğme işlem listesinden yaygın olarak kullanılan işlemleri seçin. Düğme işlemleri işlem listesidir ve kolayca gezinilebilir.

Şekil 3. Açıklamalı adım düğmesi işlemleri.

Düğme işlemleri normal işlemler gibi oluşturulur ve işlenir, ancak düğme işlemleri onCreateButtonActions(). (onCreateActions()) içeriyor. Düğme işlemlerine şu dilde yanıt verme: onGuidedActionClicked()

Adımlar arasında gezinme işlemleri gibi basit işlemler için düğme işlemlerini kullanın. Tarih seçici işlemini veya diğer düzenlenebilir işlemleri düğme işlemleri olarak kullanmayın. Ayrıca, düğme işlemlerinin alt işlemleri olamaz.

Rehberli adımları, açıklamalı bir adım dizisinde gruplandırın

GuidedStepSupportFragment tek bir adımı temsil eder. Sıralı bir adım dizisi oluşturmak için birden çok GuidedStepSupportFragment nesneyi birlikte kullanmak: Eklemek için GuidedStepSupportFragment.add() sonraki adım olan parça yığınına geçmelidir.

Kotlin

override fun onGuidedActionClicked(action: GuidedAction) {
    val fm = fragmentManager
    when(action.id) {
        CONTINUE -> GuidedStepSupportFragment.add(fm, SecondStepFragment())
    }
}

Java

@Override
public void onGuidedActionClicked(GuidedAction action) {
    FragmentManager fm = getFragmentManager();
    if (action.getId() == CONTINUE) {
       GuidedStepSupportFragment.add(fm, new SecondStepFragment());
    }
...

Kullanıcı TV uzaktan kumandasındaki Geri düğmesine basarsa cihaz, önceki GuidedStepSupportFragment parça yığını. Şu durumda: sağlayan, kendi GuidedAction geri davranışını bir sonraki adıma getirerek geri davranışını getFragmentManager().popBackStack(). Kullanıcıyı dizide daha da önceki bir adıma geri döndürmeniz gerekiyorsa popBackStackToGuidedStepSupportFragment(). parça yığınındaki belirli bir GuidedStepSupportFragment öğesine dönmek için kullanılır.

Kullanıcı dizideki son adımı tamamladığında Tümünü kaldırmak için finishGuidedStepSupportFragments() GuidedStepSupportFragment örnek kaldır ve orijinal üst etkinliğe geri dön. Öğe ilk GuidedStepSupportFragment eklendi addAsRoot() kullanılıyor, sesli arama yapılıyor finishGuidedStepSupportFragments(), üst etkinliği de kapatır.

Adım sunumunu özelleştir

GuidedStepSupportFragment sınıfı özel mülk kullanabilir. Başlık metni biçimlendirmesi veya adım geçişi gibi sunu özelliklerini kontrol eden temalar animasyonları da ekler. Özel temalar şuradan devralınmalıdır: Theme_Leanback_GuidedStep ve sağlayabilir şunda tanımlanan özelliklerin değerlerini geçersiz kılmak GuidanceStylist ve GuidedActionsStylist.

GuidedStepSupportFragment cihazınıza özel bir tema uygulamak için: aşağıdakilerden birini yapın:

  • android:theme özelliğini etkinlik öğesine sahip olmayabilir. Bu özellik ayarlanırsa tema tüm alt öğelere uygulanır Bu, ana etkinlik yalnızca birden fazla öğe içeriyorsa özel bir tema uygulamanın en basit yoludur GuidedStepSupportFragment nesne.
  • Etkinliğinizde özel bir tema kullanılıyorsa ve bu temayı uygulamak istemiyorsanız Etkinlikteki diğer görünümlere GuidedStepSupportFragment stil, LeanbackGuidedStepTheme_guidedStepTheme ekleyin özelliğini kullanabilirsiniz. Bu özellik, öğenin kullanıldığı özel tema yalnızca GuidedStepSupportFragment nesneleri yardımcı olabilir.
  • Farklı konumlarda GuidedStepSupportFragment nesne kullanırsanız aynı genel çok adımlı görevin parçası olan ve tutarlı bir tüm adımlarda görsel tema, geçersiz kılma GuidedStepSupportFragment.onProvideTheme() ve özel temanızı döndürün.

Stil ve tema ekleme hakkında daha fazla bilgi için Stiller ve Temalar.

GuidedStepSupportFragment sınıfı özel kullanır. Tema özelliklerine erişmek ve özellikleri uygulamak için stilist sınıfları. GuidanceStylist sınıfı, tema bilgilerini kullanıyor sol kılavuz görünümünün sunumunu kontrol ederken GuidedActionsStylist sınıfta tema bilgileri kullanılıyor doğru işlemler görünümünün sunulmasını kontrol etmek için.

Adımlarınızın görsel stilini, tema özelleştirmenin sağladığı özelliklerin ötesinde özelleştirmek için alt sınıf GuidanceStylist veya GuidedActionsStylist ve alt sınıfınızı şu sürede döndürün: GuidedStepSupportFragment.onCreateGuidanceStylist() veya GuidedStepSupportFragment.onCreateActionsStylist(). Bu alt sınıflarda neleri özelleştirebileceğiniz hakkında ayrıntılı bilgi için GuidanceStylist ve GuidedActionsStylist.