in LeanbackShowcase/app/src/main/java/androidx/leanback/leanbackshowcase/app/details/DetailViewExampleWithVideoBackgroundFragment.java [87:176]
private void setupUi() {
// Load the card we want to display from a JSON resource. This JSON data could come from
// anywhere in a real world app, e.g. a server.
String json = Utils
.inputStreamToString(getResources().openRawResource(R.raw.detail_example));
data = new Gson().fromJson(json, DetailedCard.class);
// Setup fragment
setTitle(getString(R.string.detail_view_title));
FullWidthDetailsOverviewRowPresenter rowPresenter = new FullWidthDetailsOverviewRowPresenter(
new DetailsDescriptionPresenter(getActivity())) {
@Override
protected RowPresenter.ViewHolder createRowViewHolder(ViewGroup parent) {
// Customize Actionbar and Content by using custom colors.
RowPresenter.ViewHolder viewHolder = super.createRowViewHolder(parent);
View actionsView = viewHolder.view.
findViewById(R.id.details_overview_actions_background);
actionsView.setBackgroundColor(getActivity().getResources().
getColor(R.color.detail_view_actionbar_background));
View detailsView = viewHolder.view.findViewById(R.id.details_frame);
detailsView.setBackgroundColor(
getResources().getColor(R.color.detail_view_background));
return viewHolder;
}
};
FullWidthDetailsOverviewSharedElementHelper mHelper = new FullWidthDetailsOverviewSharedElementHelper();
mHelper.setSharedElementEnterTransition(getActivity(), TRANSITION_NAME);
rowPresenter.setListener(mHelper);
rowPresenter.setParticipatingEntranceTransition(false);
prepareEntranceTransition();
ListRowPresenter shadowDisabledRowPresenter = new ListRowPresenter();
shadowDisabledRowPresenter.setShadowEnabled(false);
// Setup PresenterSelector to distinguish between the different rows.
ClassPresenterSelector rowPresenterSelector = new ClassPresenterSelector();
rowPresenterSelector.addClassPresenter(DetailsOverviewRow.class, rowPresenter);
rowPresenterSelector.addClassPresenter(CardListRow.class, shadowDisabledRowPresenter);
rowPresenterSelector.addClassPresenter(ListRow.class, new ListRowPresenter());
mRowsAdapter = new ArrayObjectAdapter(rowPresenterSelector);
// Setup action and detail row.
DetailsOverviewRow detailsOverview = new DetailsOverviewRow(data);
int imageResId = data.getLocalImageResourceId(getActivity());
Bundle extras = getActivity().getIntent().getExtras();
if (extras != null && extras.containsKey(EXTRA_CARD)) {
imageResId = extras.getInt(EXTRA_CARD, imageResId);
}
detailsOverview.setImageDrawable(getResources().getDrawable(imageResId, null));
ArrayObjectAdapter actionAdapter = new ArrayObjectAdapter();
mActionPlay = new Action(ACTION_PLAY, getString(R.string.action_play));
mActionRent = new Action(ACTION_RENT, getString(R.string.action_rent));
mActionWishList = new Action(ACTION_WISHLIST, getString(R.string.action_wishlist));
mActionRelated = new Action(ACTION_RELATED, getString(R.string.action_related));
actionAdapter.add(mActionRent);
actionAdapter.add(mActionWishList);
actionAdapter.add(mActionRelated);
detailsOverview.setActionsAdapter(actionAdapter);
mRowsAdapter.add(detailsOverview);
// Setup related row.
ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(
new CardPresenterSelector(getActivity()));
for (Card characterCard : data.getCharacters()) listRowAdapter.add(characterCard);
HeaderItem header = new HeaderItem(0, getString(R.string.header_related));
mRowsAdapter.add(new CardListRow(header, listRowAdapter, null));
// Setup recommended row.
listRowAdapter = new ArrayObjectAdapter(new CardPresenterSelector(getActivity()));
for (Card card : data.getRecommended()) listRowAdapter.add(card);
header = new HeaderItem(1, getString(R.string.header_recommended));
mRowsAdapter.add(new ListRow(header, listRowAdapter));
setAdapter(mRowsAdapter);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startEntranceTransition();
}
}, 500);
initializeBackground();
}