Uygulamanızda kullanıcılar için çok adımlı görevler bulunabilir. Örneğin, uygulamanızın ek içerik satın alma, karmaşık bir yapılandırma ayarı oluşturma veya yalnızca bir kararı onaylama konusunda kullanıcılara yol göstermesi gerekebilir. Tüm bu görevler, kullanıcılara bir veya daha fazla sıralı adımın uygulanması ya da karar verilmesi gerekir.
Leanback androidx kitaplığı, çok adımlı kullanıcı görevlerini uygulayacak sınıflar sunar. Bu sayfada, kullanıcıları bir görevi tamamlamaya yönelik bir dizi kararda yönlendirmek için 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ını kullanır.
Bir adımla ilgili ayrıntıları sağlama
GuidedStepSupportFragment
, bir dizi adımdaki tek bir adımı temsil eder. Görsel olarak bu adımla ilgili olası eylemlerin veya kararların bir listesini içeren bir yol gösterici görünüm sağlar.
Çok adımlı görevinizdeki her adım için GuidedStepSupportFragment
kapsamını genişletin ve kullanıcının ilgili adım ve gerçekleştirebileceği işlemler hakkında bağlam bilgisi sağlayın. onCreateGuidance()
değerini geçersiz kılın ve aşağıdaki örnekte gösterildiği gibi bağlam bilgilerini (ör. adım başlığı, açıklaması ve simgesi) içeren yeni bir GuidanceStylist.Guidance
döndürün:
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ızı istediğiniz etkinliğe ekleyin.
Etkinliğiniz yalnızca GuidedStepSupportFragment
nesne içeriyorsa ilk GuidedStepSupportFragment
öğesini eklemek için add()
yerine GuidedStepSupportFragment.addAsRoot()
öğesini kullanın. addAsRoot()
kullanmak, kullanıcı ilk GuidedStepSupportFragment
öğesini görüntülerken TV'nin uzaktan kumandasındaki Geri düğmesine basarsa hem GuidedStepSupportFragment
hem de ebeveyn etkinliğinin kapanmasını sağlar.
Not: GuidedStepSupportFragment
nesnelerini programatik olarak ekleyin, düzen XML dosyalarınıza eklemeyin.
Kullanıcı işlemleri 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
ekleyip işlem dizesini, açıklamayı ve kimliği sağlayın. Yeni işlemler eklemek için GuidedAction.Builder
öğesini 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ı seçimlerle sınırlı değildir. İşte oluşturabileceğiniz başka eylem türleri:
-
infoOnly(true)
ayarlayarak kullanıcı seçenekleri hakkında ek bilgi sağlamak için bir bilgi etiketi işlemi ekleyin.infoOnly
doğru olduğunda kullanıcılar işlemi seçemez. -
editable(true)
ayarlayarak düzenlenebilir bir metin işlemi ekleyin.editable
doğru olduğunda, kullanıcı uzaktan kumandayı veya bağlı bir klavyeyi kullanarak seçili bir işleme metin girebilir. Kullanıcının girdiği değiştirilmiş metni almak içinonGuidedActionEditedAndProceed()
değerini geçersiz kılın. Ayrıca, kullanıcının girişi ne zaman iptal ettiğini öğrenmek içinonGuidedActionEditCanceled()
değerini geçersiz kılabilirsiniz. -
İşlemleri bir grup halinde gruplandırmak için ortak bir kimlik değerine sahip
checkSetId()
kullanarak işaretlenebilir radyo düğmeleri gibi davranan bir işlem grubu ekleyin. Aynı kontrol grubu kimliğine sahip olan ve aynı listedeki tüm işlemler bağlı olarak kabul edilir. Kullanıcı bu gruptaki 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ş bir seçenek listesinden seçim yapmasına izin vermek için alt işlemler kullanan bir işlem ekleyin. Alt işlemler Alt işlem ekleme bölümünde açıklanmaktadı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çtiğinizde yeni bir adıma yol açtığını belirten bir görsel gösterge ekleyebilirsiniz.
Ayarlayabileceğiniz tüm farklı özellikler için GuidedAction
politikasına bakın.
İşlemlere yanıt vermek için onGuidedActionClicked()
değerini geçersiz kılın ve iletilen GuidedAction
işlemini işleyin. GuidedAction.getId()
öğesini inceleyerek seçili işlemi belirleyin.
Alt işlem ekleme
Bazı işlemler, kullanıcıya ek seçenekler vermenizi gerektirebilir. GuidedAction
, alt işlemlerin menüsü olarak görüntülenen bir alt işlem listesi belirtebilir.
Alt işlem listesi normal işlemleri veya radyo düğmesi işlemlerini içerebilir, ancak tarih seçici veya düzenlenebilir metin işlemlerini içeremez. Ayrıca, bir alt işlemin kendi alt işlem grubu olamaz. Bunun nedeni, sistemin birden fazla alt işlem düzeyini desteklemediği.
Alt işlem eklemek için önce aşağıdaki örnekte gösterildiği gibi, alt işlem olarak işlev gören GuidedAction
nesnelerinin bir listesini oluşturup 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()
ürününde, seçildiğinde alt eylemlerin 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()
değerini geçersiz kılarak alt işlem seçimlerini yanıtlayın:
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 ekle
Rehberli adımınızda geniş 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 gezinmesi kolaydır.
Düğme işlemleri normal işlemler gibi oluşturulur ve işlenir, ancak düğme işlemleri onCreateActions()
yerine onCreateButtonActions()
içinde oluşturulur. onGuidedActionClicked()
içindeki düğme işlemlerine yanıt verin.
Adımlar arasındaki 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.
Açıklamalı adımları rehberli bir adım halinde 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
nesnesini birlikte 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ındaki Geri düğmesine basarsa cihaz, parça yığınında önceki GuidedStepSupportFragment
değerini gösterir. Önceki adıma geri dönen kendi GuidedAction
sağlarsanız getFragmentManager().popBackStack()
yöntemini çağırarak Geri davranışını uygulayabilirsiniz.
Kullanıcıyı dizide daha önceki bir adıma döndürmeniz gerekiyorsa parça yığınındaki belirli bir GuidedStepSupportFragment
öğesine dönmek için popBackStackToGuidedStepSupportFragment()
öğesini kullanın.
Kullanıcı sıranın son adımını bitirdiğinde mevcut yığındaki tüm GuidedStepSupportFragment
örneği kaldırmak ve orijinal üst etkinliğe dönmek için finishGuidedStepSupportFragments()
tuşunu kullanın. İlk GuidedStepSupportFragment
, addAsRoot()
kullanılarak eklenirse finishGuidedStepSupportFragments()
çağrısı da üst etkinliği kapatır.
Adım sunumunu özelleştirin
GuidedStepSupportFragment
sınıfı, başlık metni biçimlendirmesi veya adım geçişi animasyonları gibi sunum özelliklerini kontrol eden özel temaları kullanabilir. Özel temalar Theme_Leanback_GuidedStep
öğesini devralmalı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'indeki etkinlik öğesine
android:theme
özelliğini ayarlayarak temayı üst etkinliğe uygulayın. Bu özelliği ayarlamak, temayı tüm alt görünümlere uygular ve üst etkinlik yalnızcaGuidedStepSupportFragment
nesne içeriyorsa özel bir 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. -
Genel olarak aynı çok adımlı görevin parçası olan farklı etkinliklerde
GuidedStepSupportFragment
nesneleri kullanıyorsanız ve tüm adımlarda tutarlı bir görsel tema kullanmak istiyorsanızGuidedStepSupportFragment.onProvideTheme()
öğesini geçersiz kılın ve ö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 uygulamak için özel stilist sınıflarını kullanır.
GuidanceStylist
sınıfı soldaki rehberlik görünümünün sunumunu kontrol etmek için tema bilgilerini kullanırken GuidedActionsStylist
sınıfı doğru işlemler 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ığı olanakların ötesinde özelleştirmek için GuidanceStylist
veya GuidedActionsStylist
alt sınıfını oluşturun ve GuidedStepSupportFragment.onCreateGuidanceStylist()
ya da GuidedStepSupportFragment.onCreateActionsStylist()
alt sınıfınızı döndürün.
Bu alt sınıflarda neleri özelleştirebileceğinizle ilgili ayrıntılar için GuidanceStylist
ve GuidedActionsStylist
belgelerine göz atın.