Merge "Use image card view for DetailsFragment example" into lmp-dev

This commit is contained in:
Dake Gu
2014-09-16 23:04:52 +00:00
committed by Android (Google) Code Review

View File

@@ -13,9 +13,11 @@
*/ */
package com.example.android.leanback; package com.example.android.leanback;
import android.content.Intent;
import android.content.res.Resources; import android.content.res.Resources;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.ActivityCompat; import android.support.v4.app.ActivityCompat;
import android.support.v4.app.ActivityOptionsCompat;
import android.support.v4.view.ViewCompat; import android.support.v4.view.ViewCompat;
import android.support.v17.leanback.widget.Action; import android.support.v17.leanback.widget.Action;
import android.support.v17.leanback.widget.ArrayObjectAdapter; import android.support.v17.leanback.widget.ArrayObjectAdapter;
@@ -23,6 +25,7 @@ import android.support.v17.leanback.widget.ClassPresenterSelector;
import android.support.v17.leanback.widget.DetailsOverviewRow; import android.support.v17.leanback.widget.DetailsOverviewRow;
import android.support.v17.leanback.widget.DetailsOverviewRowPresenter; import android.support.v17.leanback.widget.DetailsOverviewRowPresenter;
import android.support.v17.leanback.widget.HeaderItem; import android.support.v17.leanback.widget.HeaderItem;
import android.support.v17.leanback.widget.ImageCardView;
import android.support.v17.leanback.widget.ListRow; import android.support.v17.leanback.widget.ListRow;
import android.support.v17.leanback.widget.ListRowPresenter; import android.support.v17.leanback.widget.ListRowPresenter;
import android.support.v17.leanback.widget.OnActionClickedListener; import android.support.v17.leanback.widget.OnActionClickedListener;
@@ -79,6 +82,16 @@ public class DetailsFragment extends android.support.v17.leanback.app.DetailsFra
public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item, public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item,
RowPresenter.ViewHolder rowViewHolder, Row row) { RowPresenter.ViewHolder rowViewHolder, Row row) {
Log.i(TAG, "onItemClicked: " + item + " row " + row); Log.i(TAG, "onItemClicked: " + item + " row " + row);
if (item instanceof PhotoItem){
Intent intent = new Intent(getActivity(), DetailsActivity.class);
intent.putExtra(DetailsActivity.EXTRA_ITEM, (PhotoItem) item);
Bundle bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(
getActivity(),
((ImageCardView)itemViewHolder.view).getMainImageView(),
DetailsActivity.SHARED_ELEMENT_NAME).toBundle();
getActivity().startActivity(intent, bundle);
}
} }
}); });
setOnItemViewSelectedListener(new OnItemViewSelectedListener() { setOnItemViewSelectedListener(new OnItemViewSelectedListener() {
@@ -99,6 +112,7 @@ public class DetailsFragment extends android.support.v17.leanback.app.DetailsFra
public void setItem(PhotoItem photoItem) { public void setItem(PhotoItem photoItem) {
mPhotoItem = photoItem; mPhotoItem = photoItem;
mRowsAdapter.clear();
Resources res = getActivity().getResources(); Resources res = getActivity().getResources();
DetailsOverviewRow dor = new DetailsOverviewRow("Details Overview"); DetailsOverviewRow dor = new DetailsOverviewRow("Details Overview");
dor.setImageDrawable(res.getDrawable(photoItem.getImageResourceId())); dor.setImageDrawable(res.getDrawable(photoItem.getImageResourceId()));
@@ -106,10 +120,13 @@ public class DetailsFragment extends android.support.v17.leanback.app.DetailsFra
dor.addAction(new Action(2, "Rent", "$3.99", res.getDrawable(R.drawable.ic_action_a))); dor.addAction(new Action(2, "Rent", "$3.99", res.getDrawable(R.drawable.ic_action_a)));
mRowsAdapter.add(dor); mRowsAdapter.add(dor);
final CardPresenter cardPresenter = new CardPresenter();
for (int i = 0; i < NUM_ROWS; ++i) { for (int i = 0; i < NUM_ROWS; ++i) {
ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(new StringPresenter()); ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(cardPresenter);
listRowAdapter.add("Hello world"); listRowAdapter.add(new PhotoItem("Hello world", R.drawable.gallery_photo_1));
listRowAdapter.add("This is a test"); listRowAdapter.add(new PhotoItem("This is a test", R.drawable.gallery_photo_2));
listRowAdapter.add(new PhotoItem("Android TV", R.drawable.gallery_photo_3));
listRowAdapter.add(new PhotoItem("Leanback", R.drawable.gallery_photo_4));
HeaderItem header = new HeaderItem(i, "Row " + i, null); HeaderItem header = new HeaderItem(i, "Row " + i, null);
mRowsAdapter.add(new ListRow(header, listRowAdapter)); mRowsAdapter.add(new ListRow(header, listRowAdapter));
} }