Uygulamanızda kullanıcılar için çok adımlı görevler olabilir. Örneğin, uygulamanızın ek içerik satın alma, karmaşık bir yapılandırma ayarı ayarlama veya yalnızca kararı onaylama konusunda kullanıcıları yönlendirmesi gerekebilir. Tüm bu görevler, bir veya daha fazla sıralı adım ya da kararda kullanıcılara yol göstermenizi gerektirir.
androidx.leanback kitaplığı, çok adımlı kullanıcı görevlerini uygulamak için sınıflar sağlar. Bu sayfada, bir görevi tamamlamak için verilen bir dizi kararda kullanıcıya rehberlik etmek amacıyla GuidedStepSupportFragment
sınıfının nasıl kullanılacağı açıklanmaktadır. 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ından yararlanır.
Bir adımla ilgili ayrıntıları girin
GuidedStepSupportFragment
, bir dizi adımdaki tek bir adımı temsil eder. Görsel olarak, adım için olası eylemlerin veya kararların
listesini içeren bir rehberlik görünümü sunar.
![](https://developer.android.google.cn/static/images/training/tv/playback/guided-step-screen.png?authuser=5&hl=tr)
Şekil 1. Açıklamalı adım örneği.
Çok adımlı görevinizdeki her adım için GuidedStepSupportFragment
öğesini genişletin ve kullanıcının
yapabileceği adım ve işlemler hakkında bağlam bilgisi sağlayın. Aşağıdaki örnekte gösterildiği gibi onCreateGuidance()
değerini geçersiz kılar ve adım başlığı, açıklama ve simge gibi bağlam bilgilerini içeren yeni bir GuidanceStylist.Guidance
değeri döndürür:
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); }
Etkinliğinizin onCreate()
yönteminden GuidedStepSupportFragment.add()
yöntemini çağırarak GuidedStepSupportFragment
alt sınıfını istediğiniz etkinliğe ekleyin.
Etkinliğiniz yalnızca GuidedStepSupportFragment
nesne içeriyorsa ilk GuidedStepSupportFragment
nesnesini eklemek için add()
yerine GuidedStepSupportFragment.addAsRoot()
nesnesini kullanın. addAsRoot()
kullanılması, kullanıcının ilk GuidedStepSupportFragment
öğesini izlerken TV uzaktan kumandasındaki Geri düğmesine bastığında hem GuidedStepSupportFragment
hem de üst etkinliğin kapatılmasına yardımcı olur.
Not: GuidedStepSupportFragment
nesneleri düzen XML dosyalarınıza değil, programatik olarak ekleyin.
Kullanıcı işlemlerini oluşturma ve işleme
onCreateActions()
değerini geçersiz kılarak kullanıcı işlemleri ekleyin.
Geçersiz kılmanızda her işlem öğesi için yeni bir GuidedAction
ekleyin ve işlem dizesini, açıklamayı ve kimliği girin. Yeni işlemler eklemek için GuidedAction.Builder
kullanın.
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. Oluşturabileceğiniz diğer eylem türleri şunlardır:
-
infoOnly(true)
özelliğini ayarlayarak kullanıcı seçenekleri hakkında ek bilgi sağlamak için bilgi etiketi işlemi ekleyin.infoOnly
doğru değerine ayarlandığında kullanıcılar işlemi seçemez. -
editable(true)
ayarlayarak düzenlenebilir bir metin işlemi ekleyin.editable
Doğru değerine ayarlandığında kullanıcı, uzaktan kumandayı veya bağlı bir klavyeyi kullanarak seçili bir işlemde metin girebilir. Kullanıcının girdiği değiştirilmiş metni almak içinonGuidedActionEditedAndProceed()
değerini geçersiz kılın. Kullanıcının girişi ne zaman iptal ettiğini öğrenmek içinonGuidedActionEditCanceled()
politikasını da geçersiz kılabilirsiniz. -
İşaretlenebilir radyo düğmeleri gibi davranan bir dizi işlem eklemek için, işlemleri bir grup halinde gruplandırmak üzere ortak bir kimlik değerine sahip
checkSetId()
kullanın. Aynı listede bulunan ve aynı onay kümesi kimliğine sahip tüm işlemler bağlı olarak kabul edilir. Kullanıcı bu kümedeki işlemlerden birini seçtiğinde bu işlem işaretlenir ve diğer tüm işlemlerin işareti kaldırılır. -
onCreateActions()
öğesindeGuidedAction.Builder
yerineGuidedDatePickerAction.Builder
kullanarak bir tarih seçici işlemi ekleyin. Kullanıcının girdiği değiştirilme tarihi değerini almak içinonGuidedActionEditedAndProceed()
değerini geçersiz kılın. - Kullanıcının genişletilmiş seçenekler listesinden seçim yapabilmesi için alt işlemler kullanan bir işlem ekleyin. 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 erişilebilen bir düğme işlemi ekleyin. Düğme işlemleri, Düğme işlemleri ekle bölümünde açıklanmaktadır.
Ayrıca, hasNext(true)
ayarlayarak bir işlem seçmenin yeni bir adıma yol açtığına dair görsel bir gösterge ekleyebilirsiniz.
Ayarlayabileceğiniz farklı özelliklerin tümü için GuidedAction
adresine bakın.
İşlemlere yanıt vermek için onGuidedActionClicked()
politikasını geçersiz kılın ve iletilen GuidedAction
işlemini işleyin. GuidedAction.getId()
aracını inceleyerek seçilen işlemi belirleyin.
Alt işlem ekle
Bazı işlemler, kullanıcıya ek seçenekler sunmanızı gerektirebilir. GuidedAction
, alt işlemlerden oluşan bir menü olarak görüntülenen bir alt işlemler listesi belirtebilir.
![](https://developer.android.google.cn/static/images/training/tv/playback/guided-step-subaction.png?authuser=5&hl=tr)
Ş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 tarih seçici veya düzenlenebilir metin işlemleri içeremez. Sistem birden fazla alt işlem düzeyini desteklemediğinden, bir alt işlemin kendi alt işlem grubu olamaz.
Alt işlem eklemek için önce aşağıdaki örnekte gösterildiği gibi, alt işlem görevi gören GuidedAction
nesnelerin listesini oluşturun ve doldurun:
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()
öğesinde, seçildiğinde alt işlemlerin listesini görüntüleyen bir üst düzey GuidedAction
oluşturun:
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()
geçersiz kılınarak alt işlem seçimlerine yanıt verin:
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 en sık kullanılan işlemlere erişmek için listeyi kaydırması gerekebilir. Yaygın olarak kullanılan işlemleri, işlem listesinden ayırmak için düğme işlemlerini kullanın. Düğme işlemleri, işlem listesinin yanında görünür ve kolayca gezinilebilir.
![](https://developer.android.google.cn/static/images/training/tv/playback/guided-step-buttonaction.png?authuser=5&hl=tr)
Ş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şlemlerini onCreateActions()
yerine onCreateButtonActions()
içinde oluşturursunuz. onGuidedActionClicked()
ürününde düğme işlemlerine yanıt verin.
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 dizideki bir sonraki adımı parça yığınına eklemek üzere GuidedStepSupportFragment.add()
kullanarak birden fazla GuidedStepSupportFragment
nesneyi gruplandırın.
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ında Geri düğmesine basarsa cihaz, parça yığınında önceki GuidedStepSupportFragment
gösterir. Önceki adıma döndüren kendi GuidedAction
'inizi sağlarsanız getFragmentManager().popBackStack()
yöntemini çağırarak Geri davranışını uygulayabilirsiniz.
Kullanıcıyı dizide daha da önceki bir adıma döndürmeniz gerekiyorsa parça yığınındaki belirli bir GuidedStepSupportFragment
öğesine dönmek için popBackStackToGuidedStepSupportFragment()
tuşunu kullanın.
Kullanıcı sıranın son adımını tamamladığında, geçerli yığından GuidedStepSupportFragment
örneğin tümünü kaldırmak ve orijinal üst etkinliğe dönmek için finishGuidedStepSupportFragments()
kullanın. İlk GuidedStepSupportFragment
, addAsRoot()
kullanılarak eklenirse finishGuidedStepSupportFragments()
çağrısının yapılması, üst etkinliği de kapatır.
Adım sunumunu özelleştir
GuidedStepSupportFragment
sınıfı, başlık metni biçimlendirmesi veya adım geçişi animasyonları gibi sunu özelliklerini kontrol eden özel temalar kullanabilir. Özel temalar Theme_Leanback_GuidedStep
öğesinden devralınmalıdır ve GuidanceStylist
ile GuidedActionsStylist
içinde tanımlanan özellikler için geçersiz kılma değerleri sağlayabilir.
GuidedStepSupportFragment
cihazınıza özel bir tema uygulamak için aşağıdakilerden birini yapın:
-
Android manifest dosyasında
android:theme
özelliğini etkinlik öğesine ayarlayarak temayı üst etkinliğe uygulayın. Bu özelliğin ayarlanması, temayı tüm çocuk görünümlerine uygular ve ebeveyn etkinliğinde yalnızcaGuidedStepSupportFragment
nesne bulunuyorsa özel tema uygulamanın en basit yoludur. -
Etkinliğiniz zaten özel bir tema kullanıyorsa ve etkinlikteki diğer görünümlere
GuidedStepSupportFragment
stilleri uygulamak istemiyorsanız mevcut özel etkinlik temanızaLeanbackGuidedStepTheme_guidedStepTheme
özelliğini ekleyin. Bu özellik, yalnızca etkinliğinizdekiGuidedStepSupportFragment
nesnelerinin kullandığı özel temaya işaret eder. -
Aynı genel çok adımlı görevin parçası olan farklı etkinliklerde
GuidedStepSupportFragment
nesneleri kullanıyor ve tüm adımlarda tutarlı bir görsel tema kullanmak istiyorsanızGuidedStepSupportFragment.onProvideTheme()
öğesini geçersiz kılıp özel temanızı döndürün.
Stil ve tema ekleme hakkında daha fazla bilgi için bkz. Stiller ve Temalar.
GuidedStepSupportFragment
sınıfı, tema özelliklerine erişmek ve özellikleri uygulamak için özel stilist sınıfları kullanır.
GuidanceStylist
sınıfı sol rehberlik görünümünün sunumunu kontrol etmek için tema bilgilerini kullanırken GuidedActionsStylist
sınıfı doğru işlem görünümünün sunumunu kontrol etmek için tema bilgilerini kullanır.
Adımlarınızın görsel stilini, tema özelleştirmenin sağladığı imkanların ötesinde özelleştirmek için GuidanceStylist
veya GuidedActionsStylist
alt sınıfını kullanın ve GuidedStepSupportFragment.onCreateGuidanceStylist()
veya GuidedStepSupportFragment.onCreateActionsStylist()
içinde alt sınıfınızı döndürün.
Bu alt sınıflarda neleri özelleştirebileceğiniz hakkında ayrıntılı bilgi için GuidanceStylist
ve GuidedActionsStylist
belgelerine göz atın.