Add example of DatePicker
Bug 25390757 Change-Id: Iec578a2a195a7f8c6873fd95ceb08a33f502894b
This commit is contained in:
@@ -25,6 +25,7 @@ import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.support.v17.leanback.app.GuidedStepFragment;
|
||||
import android.support.v17.leanback.widget.GuidedAction;
|
||||
import android.support.v17.leanback.widget.GuidedDatePickerAction;
|
||||
import android.support.v17.leanback.widget.GuidedActionsStylist;
|
||||
import android.support.v17.leanback.widget.GuidanceStylist;
|
||||
import android.support.v17.leanback.widget.GuidanceStylist.Guidance;
|
||||
@@ -37,6 +38,7 @@ import android.view.ViewTreeObserver.OnGlobalLayoutListener;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -51,6 +53,7 @@ public class GuidedStepActivity extends Activity {
|
||||
private static final int PASSWORD = 5;
|
||||
private static final int PAYMENT = 6;
|
||||
private static final int NEW_PAYMENT = 7;
|
||||
private static final int PAYMENT_EXPIRE = 8;
|
||||
|
||||
private static final int OPTION_CHECK_SET_ID = 10;
|
||||
private static final int DEFAULT_OPTION = 0;
|
||||
@@ -137,6 +140,14 @@ public class GuidedStepActivity extends Activity {
|
||||
.build());
|
||||
}
|
||||
|
||||
private static void addDatePickerAction(List<GuidedAction> actions, long id, String title) {
|
||||
actions.add(new GuidedDatePickerAction.Builder(null)
|
||||
.id(id)
|
||||
.title(title)
|
||||
.datePickerFormat("MY")
|
||||
.build());
|
||||
}
|
||||
|
||||
private static void addEditableDescriptionAction(List<GuidedAction> actions, long id,
|
||||
String title, String desc, String editDescription, int descriptionEditInputType) {
|
||||
actions.add(new GuidedAction.Builder()
|
||||
@@ -221,6 +232,7 @@ public class GuidedStepActivity extends Activity {
|
||||
addEditableAction(actions, NEW_PAYMENT, "Input credit card number", "",
|
||||
InputType.TYPE_CLASS_NUMBER,
|
||||
"Input credit card number", "Input credit card number");
|
||||
addDatePickerAction(actions, PAYMENT_EXPIRE, "Exp:");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -253,10 +265,10 @@ public class GuidedStepActivity extends Activity {
|
||||
public long onGuidedActionEditedAndProceed(GuidedAction action) {
|
||||
if (action.getId() == NEW_PAYMENT) {
|
||||
CharSequence editTitle = action.getEditTitle();
|
||||
if (TextUtils.isDigitsOnly(editTitle) && editTitle.length() == 16) {
|
||||
if (isCardNumberValid(editTitle)) {
|
||||
editTitle = editTitle.subSequence(editTitle.length() - 4, editTitle.length());
|
||||
action.setDescription("Visa XXXX-XXXX-XXXX-" + editTitle);
|
||||
updateOkButton(true);
|
||||
updateOkButton(isExpDateValid(findActionById(PAYMENT_EXPIRE)));
|
||||
return GuidedAction.ACTION_ID_NEXT;
|
||||
} else if (editTitle.length() == 0) {
|
||||
action.setDescription("Input credit card number");
|
||||
@@ -267,10 +279,24 @@ public class GuidedStepActivity extends Activity {
|
||||
updateOkButton(false);
|
||||
return GuidedAction.ACTION_ID_CURRENT;
|
||||
}
|
||||
} else if (action.getId() == PAYMENT_EXPIRE) {
|
||||
updateOkButton(isExpDateValid(action) &&
|
||||
isCardNumberValid(findActionById(NEW_PAYMENT).getEditTitle()));
|
||||
}
|
||||
return GuidedAction.ACTION_ID_NEXT;
|
||||
}
|
||||
|
||||
boolean isCardNumberValid(CharSequence number) {
|
||||
return TextUtils.isDigitsOnly(number) && number.length() == 16;
|
||||
}
|
||||
|
||||
boolean isExpDateValid(GuidedAction action) {
|
||||
long date = ((GuidedDatePickerAction) action).getDate();
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.setTimeInMillis(date);
|
||||
return Calendar.getInstance().before(c);
|
||||
}
|
||||
|
||||
void updateOkButton(boolean enabled) {
|
||||
findButtonActionById(GuidedAction.ACTION_ID_OK).setEnabled(enabled);
|
||||
notifyButtonActionChanged(findButtonActionPositionById(GuidedAction.ACTION_ID_OK));
|
||||
|
||||
@@ -27,6 +27,7 @@ import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.support.v17.leanback.app.GuidedStepSupportFragment;
|
||||
import android.support.v17.leanback.widget.GuidedAction;
|
||||
import android.support.v17.leanback.widget.GuidedDatePickerAction;
|
||||
import android.support.v17.leanback.widget.GuidedActionsStylist;
|
||||
import android.support.v17.leanback.widget.GuidanceStylist;
|
||||
import android.support.v17.leanback.widget.GuidanceStylist.Guidance;
|
||||
@@ -39,6 +40,7 @@ import android.view.ViewTreeObserver.OnGlobalLayoutListener;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -53,6 +55,7 @@ public class GuidedStepSupportActivity extends FragmentActivity {
|
||||
private static final int PASSWORD = 5;
|
||||
private static final int PAYMENT = 6;
|
||||
private static final int NEW_PAYMENT = 7;
|
||||
private static final int PAYMENT_EXPIRE = 8;
|
||||
|
||||
private static final int OPTION_CHECK_SET_ID = 10;
|
||||
private static final int DEFAULT_OPTION = 0;
|
||||
@@ -139,6 +142,14 @@ public class GuidedStepSupportActivity extends FragmentActivity {
|
||||
.build());
|
||||
}
|
||||
|
||||
private static void addDatePickerAction(List<GuidedAction> actions, long id, String title) {
|
||||
actions.add(new GuidedDatePickerAction.Builder(null)
|
||||
.id(id)
|
||||
.title(title)
|
||||
.datePickerFormat("MY")
|
||||
.build());
|
||||
}
|
||||
|
||||
private static void addEditableDescriptionAction(List<GuidedAction> actions, long id,
|
||||
String title, String desc, String editDescription, int descriptionEditInputType) {
|
||||
actions.add(new GuidedAction.Builder()
|
||||
@@ -223,6 +234,7 @@ public class GuidedStepSupportActivity extends FragmentActivity {
|
||||
addEditableAction(actions, NEW_PAYMENT, "Input credit card number", "",
|
||||
InputType.TYPE_CLASS_NUMBER,
|
||||
"Input credit card number", "Input credit card number");
|
||||
addDatePickerAction(actions, PAYMENT_EXPIRE, "Exp:");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -255,10 +267,10 @@ public class GuidedStepSupportActivity extends FragmentActivity {
|
||||
public long onGuidedActionEditedAndProceed(GuidedAction action) {
|
||||
if (action.getId() == NEW_PAYMENT) {
|
||||
CharSequence editTitle = action.getEditTitle();
|
||||
if (TextUtils.isDigitsOnly(editTitle) && editTitle.length() == 16) {
|
||||
if (isCardNumberValid(editTitle)) {
|
||||
editTitle = editTitle.subSequence(editTitle.length() - 4, editTitle.length());
|
||||
action.setDescription("Visa XXXX-XXXX-XXXX-" + editTitle);
|
||||
updateOkButton(true);
|
||||
updateOkButton(isExpDateValid(findActionById(PAYMENT_EXPIRE)));
|
||||
return GuidedAction.ACTION_ID_NEXT;
|
||||
} else if (editTitle.length() == 0) {
|
||||
action.setDescription("Input credit card number");
|
||||
@@ -269,10 +281,24 @@ public class GuidedStepSupportActivity extends FragmentActivity {
|
||||
updateOkButton(false);
|
||||
return GuidedAction.ACTION_ID_CURRENT;
|
||||
}
|
||||
} else if (action.getId() == PAYMENT_EXPIRE) {
|
||||
updateOkButton(isExpDateValid(action) &&
|
||||
isCardNumberValid(findActionById(NEW_PAYMENT).getEditTitle()));
|
||||
}
|
||||
return GuidedAction.ACTION_ID_NEXT;
|
||||
}
|
||||
|
||||
boolean isCardNumberValid(CharSequence number) {
|
||||
return TextUtils.isDigitsOnly(number) && number.length() == 16;
|
||||
}
|
||||
|
||||
boolean isExpDateValid(GuidedAction action) {
|
||||
long date = ((GuidedDatePickerAction) action).getDate();
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.setTimeInMillis(date);
|
||||
return Calendar.getInstance().before(c);
|
||||
}
|
||||
|
||||
void updateOkButton(boolean enabled) {
|
||||
findButtonActionById(GuidedAction.ACTION_ID_OK).setEnabled(enabled);
|
||||
notifyButtonActionChanged(findButtonActionPositionById(GuidedAction.ACTION_ID_OK));
|
||||
|
||||
Reference in New Issue
Block a user