Merge "Add editable actions to Guided Step test activity." into mnc-ub-dev

This commit is contained in:
Kris Giesing
2015-08-10 19:59:40 +00:00
committed by Android (Google) Code Review
5 changed files with 168 additions and 31 deletions

View File

@@ -58,6 +58,7 @@
<activity android:name="GuidedStepActivity"
android:theme="@style/Theme.Example.Leanback.GuidedStep"
android:windowSoftInputMode="adjustResize"
android:exported="true" />
<activity android:name="DetailsPresenterSelectionActivity"

View File

@@ -47,9 +47,12 @@
<string name="guidedstep_first_description">First step of guided sequence</string>
<string name="guidedstep_first_breadcrumb">Guided Steps</string>
<string name="guidedstep_second_title">Second</string>
<string name="guidedstep_second_description">Showcasing different action configurations</string>
<string name="guidedstep_second_description">Showcasing editable actions</string>
<string name="guidedstep_second_breadcrumb">Guided Steps</string>
<string name="guidedstep_third_title">Third</string>
<string name="guidedstep_third_description">Third step of guided sequence</string>
<string name="guidedstep_third_description">Showcasing different action configurations</string>
<string name="guidedstep_third_breadcrumb">Guided Steps</string>
<string name="guidedstep_fourth_title">Fourth</string>
<string name="guidedstep_fourth_description">Fourth step of guided sequence</string>
<string name="guidedstep_fourth_breadcrumb">Guided Steps</string>
</resources>

View File

@@ -17,6 +17,12 @@ import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.ActivityOptionsCompat;
import android.app.FragmentManager;
import android.graphics.drawable.Drawable;
import android.support.v17.leanback.app.GuidedStepFragment;
import android.support.v17.leanback.widget.GuidedAction;
import android.support.v17.leanback.widget.GuidanceStylist;
import android.support.v17.leanback.widget.GuidanceStylist.Guidance;
import android.support.v17.leanback.widget.ArrayObjectAdapter;
import android.support.v17.leanback.widget.HeaderItem;
import android.support.v17.leanback.widget.ImageCardView;
@@ -31,6 +37,9 @@ import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import java.util.List;
import java.util.ArrayList;
public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragment {
private static final String TAG = "leanback.BrowseFragment";
@@ -125,26 +134,77 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm
@Override
public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item,
RowPresenter.ViewHolder rowViewHolder, Row row) {
ConfirmPhotoView step = new ConfirmPhotoView((PhotoItem)item,
(ImageCardView)itemViewHolder.view);
GuidedStepFragment.add(getFragmentManager(), step);
}
}
private class ConfirmPhotoView extends GuidedStepFragment {
private static final int CONTINUE = 1;
private static final int BACK = 2;
private PhotoItem mItem;
private ImageCardView mImageCardView;
private void addAction(List<GuidedAction> actions, long id, String title, String desc) {
actions.add(new GuidedAction.Builder()
.id(id)
.title(title)
.description(desc)
.build());
}
ConfirmPhotoView(PhotoItem item, ImageCardView imageCardView) {
mItem = item;
mImageCardView = imageCardView;
}
@Override
public Guidance onCreateGuidance(Bundle savedInstanceState) {
String title = "Confirm";
String breadcrumb = "BrowseFragment";
String description = "Confirm intent to view this photo";
Drawable icon = getActivity().getDrawable(R.drawable.ic_main_icon);
return new Guidance(title, description, breadcrumb, icon);
}
@Override
public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) {
addAction(actions, CONTINUE, "Continue", "Let's do it");
addAction(actions, BACK, "Cancel", "Nevermind");
}
@Override
public void onGuidedActionClicked(GuidedAction action) {
FragmentManager fm = getFragmentManager();
if (action.getId() == CONTINUE) {
launchPhotoActivity(mItem, mImageCardView);
} else {
fm.popBackStack();
}
}
}
private void launchPhotoActivity(PhotoItem item, ImageCardView imageCardView) {
Intent intent;
Bundle bundle;
if ( ((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_8) {
if ( item.getImageResourceId() == R.drawable.gallery_photo_8) {
intent = new Intent(getActivity(), BrowseActivity.class);
bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity())
.toBundle();
} else if ( ((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_7) {
} else if ( item.getImageResourceId() == R.drawable.gallery_photo_7) {
intent = new Intent(getActivity(), RowsActivity.class);
bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity())
.toBundle();
} else {
intent = new Intent(getActivity(), DetailsActivity.class);
intent.putExtra(DetailsActivity.EXTRA_ITEM, (PhotoItem) item);
intent.putExtra(DetailsActivity.EXTRA_ITEM, item);
bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(
getActivity(),
((ImageCardView)itemViewHolder.view).getMainImageView(),
imageCardView.getMainImageView(),
DetailsActivity.SHARED_ELEMENT_NAME).toBundle();
}
getActivity().startActivity(intent, bundle);
}
}
}

View File

@@ -20,15 +20,18 @@ import android.app.Activity;
import android.app.FragmentManager;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
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.GuidanceStylist;
import android.support.v17.leanback.widget.GuidanceStylist.Guidance;
import android.util.Log;
import android.view.ViewGroup;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import java.util.List;
import java.util.ArrayList;
/**
* Activity that showcases different aspects of GuidedStepFragments.
@@ -38,6 +41,9 @@ public class GuidedStepActivity extends Activity {
private static final int CONTINUE = 1;
private static final int BACK = 2;
private static final int FIRST_NAME = 1;
private static final int LAST_NAME = 2;
private static final int OPTION_CHECK_SET_ID = 10;
private static final int DEFAULT_OPTION = 0;
private static final String[] OPTION_NAMES = { "Option A", "Option B", "Option C" };
@@ -46,10 +52,36 @@ public class GuidedStepActivity extends Activity {
private static final int[] OPTION_DRAWABLES = { R.drawable.ic_guidedstep_option_a,
R.drawable.ic_guidedstep_option_b, R.drawable.ic_guidedstep_option_c };
private static final String TAG = GuidedStepActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.v(TAG, "onCreate");
super.onCreate(savedInstanceState);
GuidedStepFragment.add(getFragmentManager(), new FirstStepFragment());
getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override public void onGlobalLayout() {
//Log.v(TAG, "onGlobalLayout", new Exception());
}
});
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
Log.v(TAG, "onConfigurationChanged");
super.onConfigurationChanged(newConfig);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
Log.v(TAG, "onSaveInstanceState");
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
Log.v(TAG, "onRestoreInstanceState");
super.onRestoreInstanceState(savedInstanceState);
}
private static void addAction(List<GuidedAction> actions, long id, String title, String desc) {
@@ -60,6 +92,15 @@ public class GuidedStepActivity extends Activity {
.build());
}
private static void addEditableAction(List<GuidedAction> actions, long id, String title, String desc) {
actions.add(new GuidedAction.Builder()
.id(id)
.title(title)
.description(desc)
.editable(true)
.build());
}
private static void addCheckedAction(List<GuidedAction> actions, int iconResId, Context context,
String title, String desc) {
actions.add(new GuidedAction.Builder()
@@ -107,8 +148,6 @@ public class GuidedStepActivity extends Activity {
private static class SecondStepFragment extends GuidedStepFragment {
private int mSelectedOption = DEFAULT_OPTION;
@Override
public Guidance onCreateGuidance(Bundle savedInstanceState) {
String title = getString(R.string.guidedstep_second_title);
@@ -118,6 +157,35 @@ public class GuidedStepActivity extends Activity {
return new Guidance(title, description, breadcrumb, icon);
}
@Override
public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) {
addEditableAction(actions, FIRST_NAME, "Pat", "Your first name");
addEditableAction(actions, LAST_NAME, "Smith", "Your last name");
}
@Override
public void onGuidedActionClicked(GuidedAction action) {
if (action.getId() == LAST_NAME) {
FragmentManager fm = getFragmentManager();
GuidedStepFragment.add(fm, new ThirdStepFragment());
}
}
}
private static class ThirdStepFragment extends GuidedStepFragment {
private int mSelectedOption = DEFAULT_OPTION;
@Override
public Guidance onCreateGuidance(Bundle savedInstanceState) {
String title = getString(R.string.guidedstep_third_title);
String breadcrumb = getString(R.string.guidedstep_third_breadcrumb);
String description = getString(R.string.guidedstep_third_description);
Drawable icon = getActivity().getDrawable(R.drawable.ic_main_icon);
return new Guidance(title, description, breadcrumb, icon);
}
@Override
public GuidanceStylist onCreateGuidanceStylist() {
return new GuidanceStylist() {
@@ -153,7 +221,7 @@ public class GuidedStepActivity extends Activity {
public void onGuidedActionClicked(GuidedAction action) {
if (action.getId() == CONTINUE) {
FragmentManager fm = getFragmentManager();
GuidedStepFragment.add(fm, new ThirdStepFragment(mSelectedOption));
GuidedStepFragment.add(fm, new FourthStepFragment(mSelectedOption));
} else {
mSelectedOption = getSelectedActionPosition()-1;
}
@@ -161,17 +229,17 @@ public class GuidedStepActivity extends Activity {
}
private static class ThirdStepFragment extends GuidedStepFragment {
private static class FourthStepFragment extends GuidedStepFragment {
private final int mOption;
public ThirdStepFragment(int option) {
public FourthStepFragment(int option) {
mOption = option;
}
@Override
public Guidance onCreateGuidance(Bundle savedInstanceState) {
String title = getString(R.string.guidedstep_third_title);
String breadcrumb = getString(R.string.guidedstep_third_breadcrumb);
String title = getString(R.string.guidedstep_fourth_title);
String breadcrumb = getString(R.string.guidedstep_fourth_breadcrumb);
String description = "You chose: " + OPTION_NAMES[mOption];
Drawable icon = getActivity().getDrawable(R.drawable.ic_main_icon);
return new Guidance(title, description, breadcrumb, icon);

View File

@@ -37,6 +37,9 @@ import android.support.v17.leanback.widget.OnItemViewClickedListener;
import android.support.v17.leanback.widget.ControlButtonPresenterSelector;
import android.support.v17.leanback.widget.SparseArrayObjectAdapter;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
public class PlaybackOverlayFragment extends android.support.v17.leanback.app.PlaybackOverlayFragment {
@@ -102,7 +105,7 @@ public class PlaybackOverlayFragment extends android.support.v17.leanback.app.Pl
@Override
public int getUpdatePeriod() {
int totalTime = getControlsRow().getTotalTime();
if (getView() == null || totalTime <= 0) {
if (getView() == null || getView().getWidth() == 0 || totalTime <= 0) {
return 1000;
}
return Math.max(16, totalTime / getView().getWidth());
@@ -149,11 +152,13 @@ public class PlaybackOverlayFragment extends android.support.v17.leanback.app.Pl
HeaderItem header = new HeaderItem(i, "Row " + i);
getAdapter().set(ROW_CONTROLS + 1 + i, new ListRow(header, listRowAdapter));
}
}
@Override
public void onStart() {
super.onStart();
mGlue.setFadingEnabled(true);
mGlue.enableProgressUpdating(mGlue.hasValidMedia() && mGlue.isMediaPlaying());
}