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
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 d9ddf7f..0b0f692 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 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 @@
@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 4ed46ee..7f3a83a 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 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);
@@ -51,34 +61,8 @@
}
@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<GuidedAction> 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 @@
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 7a336c7..0cc4221 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 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 @@
@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 255705c..450311c 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 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 1f13234..bde1a06 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.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 b83bd98..8fd5981 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.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 @@
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 4c2c673..9bc6ffa 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 @@
<string name="wizard_example_watch_now">Watch now</string>
<string name="wizard_example_later">Later</string>
<string name="wizard_example_watch_now_clicked">\'Watch now\' clicked.</string>
+ <string name="wizard_example_visa_balance">Visa - 1234 Balance $60.00</string>
+ <string name="wizard_example_just_a_second">Just a second...</string>
</resources>
\ No newline at end of file