From 80116aacde385b9ff63b5aaccb5ef653b870fff3 Mon Sep 17 00:00:00 2001 From: Robert Hahn Date: Wed, 5 Aug 2015 10:04:31 -0700 Subject: [PATCH] Polished Wizard example for Showcase app Extracted Strings, added JavaDoc, refactored the call of the second Wizard screen to be less error-prone code. Change-Id: Ib8a8af7019818b29d71ee1bed1cac3e2b56e8c11 --- .../wizard/WizardExample1stStepFragment.java | 9 ++-- .../wizard/WizardExample2ndStepFragment.java | 42 ++++++------------- .../wizard/WizardExample3rdStepFragment.java | 6 ++- .../wizard/WizardExample4thStepFragment.java | 4 +- .../app/wizard/WizardExampleActivity.java | 2 +- .../wizard/WizardExampleBaseStepFragment.java | 9 ++-- .../app/src/main/res/values/strings.xml | 2 + 7 files changed, 32 insertions(+), 42 deletions(-) diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample1stStepFragment.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample1stStepFragment.java index d9ddf7f27..0b0f6929c 100644 --- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample1stStepFragment.java +++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample1stStepFragment.java @@ -24,7 +24,8 @@ import android.support.v17.leanback.widget.GuidedAction; import java.util.List; /** - * TODO: JavaDoc + * The first screen of the rental wizard. Gives the user the choice between renting the movie in SD + * or HD quality. */ public class WizardExample1stStepFragment extends WizardExampleBaseStepFragment { @@ -66,10 +67,8 @@ public class WizardExample1stStepFragment extends WizardExampleBaseStepFragment @Override public void onGuidedActionClicked(GuidedAction action) { - GuidedStepFragment fragment = new WizardExample2ndStepFragment(); - Bundle args = getArguments(); // Reuse the same arguments this fragment was given. - args.putBoolean("hd", ACTION_ID_BUY_HD == action.getId()); - fragment.setArguments(args); + boolean rentHd = ACTION_ID_BUY_HD == action.getId(); + GuidedStepFragment fragment = WizardExample2ndStepFragment.build(rentHd, this); add(getFragmentManager(), fragment); } } diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample2ndStepFragment.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample2ndStepFragment.java index 4ed46eee8..7f3a83a39 100644 --- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample2ndStepFragment.java +++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample2ndStepFragment.java @@ -28,13 +28,23 @@ import android.widget.Toast; import java.util.List; /** - * TODO: JavaDoc + * Displays the second screen of the rental wizard which requires the user to confirm his purchase. */ public class WizardExample2ndStepFragment extends WizardExampleBaseStepFragment { + private static final String ARG_HD = "hd"; private static final int ACTION_ID_CONFIRM = 1; private static final int ACTION_ID_PAYMENT_METHOD = ACTION_ID_CONFIRM + 1; + public static GuidedStepFragment build(boolean hd, WizardExampleBaseStepFragment previousFragment) { + GuidedStepFragment fragment = new WizardExample2ndStepFragment(); + // Reuse the same arguments this fragment was given. + Bundle args = previousFragment.getArguments(); + args.putBoolean(ARG_HD, hd); + fragment.setArguments(args); + return fragment; + } + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -50,35 +60,9 @@ public class WizardExample2ndStepFragment extends WizardExampleBaseStepFragment return guidance; } - @Override - public GuidedActionsStylist onCreateActionsStylist() { - GuidedActionsStylist stylist = new GuidedActionsStylist() { - - @Override - public void onBindViewHolder(ViewHolder vh, GuidedAction action) { - super.onBindViewHolder(vh, action); - - if (ACTION_ID_CONFIRM == action.getId()) { - Drawable background = getResources().getDrawable( - R.drawable.wizard_important_action_item_background, null); - vh.view.setBackground(background); - vh.getTitleView().setTextColor(Color.parseColor("#666666")); - vh.getDescriptionView().setTextColor(Color.parseColor("#666666")); - } else { - vh.view.setBackground(null); - vh.getTitleView().setTextColor(getResources().getColor(android.support.v17.leanback.R.color.lb_guidedactions_item_unselected_text_color, - getActivity().getTheme())); - vh.getDescriptionView().setTextColor(getResources().getColor(android.support.v17.leanback.R.color.lb_guidedactions_item_unselected_text_color, - getActivity().getTheme())); - } - } - }; - return stylist; - } - @Override public void onCreateActions(@NonNull List actions, Bundle savedInstanceState) { - boolean rentHighDefinition = getArguments().getBoolean("hd"); + boolean rentHighDefinition = getArguments().getBoolean(ARG_HD); GuidedAction action = new GuidedAction.Builder() .id(ACTION_ID_CONFIRM) @@ -89,7 +73,7 @@ public class WizardExample2ndStepFragment extends WizardExampleBaseStepFragment action = new GuidedAction.Builder() .id(ACTION_ID_PAYMENT_METHOD) .title(getString(R.string.wizard_example_payment_method)) - .description("Visa - 1234 Balance $60.00") + .description(getString(R.string.wizard_example_visa_balance)) .build(); actions.add(action); } diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample3rdStepFragment.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample3rdStepFragment.java index 7a336c77f..0cc422150 100644 --- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample3rdStepFragment.java +++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample3rdStepFragment.java @@ -26,7 +26,9 @@ import android.support.v17.leanback.widget.GuidedActionsStylist; import java.util.List; /** - * TODO: JavaDoc + * This is the third screen of the rental wizard which will display a progressbar while waiting for + * the server to process the rental. The server communication is faked for the sake of this example + * by waiting four seconds until continuing. */ public class WizardExample3rdStepFragment extends WizardExampleBaseStepFragment { @@ -75,7 +77,7 @@ public class WizardExample3rdStepFragment extends WizardExampleBaseStepFragment @Override public GuidanceStylist.Guidance onCreateGuidance(Bundle savedInstanceState) { GuidanceStylist.Guidance guidance = new GuidanceStylist.Guidance(mMovie.getTitle(), - "Just a second...", + getString(R.string.wizard_example_just_a_second), mMovie.getBreadcrump(), null); return guidance; } diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample4thStepFragment.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample4thStepFragment.java index 255705ca5..450311c24 100644 --- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample4thStepFragment.java +++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExample4thStepFragment.java @@ -24,7 +24,9 @@ import android.widget.Toast; import java.util.List; /** - * TODO: JavaDoc + * The last screen of the Wizard gives to options to either watch the rented movie now or later. Due + * to keep this example simple and focused on the usage of the GuidedStepFragment, clicking on + * either action will end the wizard. You might however start a new Activity playing the movie. */ public class WizardExample4thStepFragment extends WizardExampleBaseStepFragment { diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExampleActivity.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExampleActivity.java index 1f132342a..bde1a06fd 100644 --- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExampleActivity.java +++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExampleActivity.java @@ -21,7 +21,7 @@ import android.support.v17.leanback.app.GuidedStepFragment; import android.support.v17.leanback.supportleanbackshowcase.R; /** - * TODO: Javadoc + * An Activity displaying a wizard for renting a movie. */ public class WizardExampleActivity extends Activity { diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExampleBaseStepFragment.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExampleBaseStepFragment.java index b83bd983a..8fd59814b 100644 --- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExampleBaseStepFragment.java +++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/wizard/WizardExampleBaseStepFragment.java @@ -20,9 +20,10 @@ import android.support.v17.leanback.supportleanbackshowcase.models.Movie; import android.support.v17.leanback.supportleanbackshowcase.R; /** - * TODO: JavaDoc + * A base class which provides all it's implementations with a method #getWizardActivity(). It also + * makes sure that the wizard is using the correct theme. */ -public class WizardExampleBaseStepFragment extends GuidedStepFragment { +public abstract class WizardExampleBaseStepFragment extends GuidedStepFragment { protected Movie mMovie; @@ -35,12 +36,12 @@ public class WizardExampleBaseStepFragment extends GuidedStepFragment { if (!(getActivity() instanceof WizardExampleActivity)) { throw new IllegalStateException(WizardExampleActivity.class.getName() + " expected."); } - return (WizardExampleActivity)getActivity(); + return (WizardExampleActivity) getActivity(); } @Override public void onCreate(Bundle savedInstanceState) { - mMovie = (Movie)getArguments().getSerializable("movie"); + mMovie = (Movie) getArguments().getSerializable("movie"); super.onCreate(savedInstanceState); } } diff --git a/samples/SupportLeanbackShowcase/app/src/main/res/values/strings.xml b/samples/SupportLeanbackShowcase/app/src/main/res/values/strings.xml index 4c2c673ac..9bc6ffa28 100644 --- a/samples/SupportLeanbackShowcase/app/src/main/res/values/strings.xml +++ b/samples/SupportLeanbackShowcase/app/src/main/res/values/strings.xml @@ -85,4 +85,6 @@ Watch now Later \'Watch now\' clicked. + Visa - 1234 Balance $60.00 + Just a second... \ No newline at end of file