From d54e6b19e4639412fbbb19bf478034634c2907c5 Mon Sep 17 00:00:00 2001 From: Dake Gu Date: Wed, 21 May 2014 17:35:00 -0700 Subject: [PATCH] SupportLeanbackDemo: activity transition b/15024618 Change-Id: Ib23746360984f3bbe255e8f75df30c7422b553f2 --- .../SupportLeanbackDemos/AndroidManifest.xml | 2 +- .../res/drawable/gallery_photo_1.jpg | Bin 0 -> 6240 bytes .../res/drawable/gallery_photo_2.jpg | Bin 0 -> 6146 bytes .../res/drawable/gallery_photo_3.jpg | Bin 0 -> 3858 bytes .../res/drawable/gallery_photo_4.jpg | Bin 0 -> 4663 bytes .../res/drawable/gallery_photo_5.jpg | Bin 0 -> 6486 bytes .../res/drawable/gallery_photo_6.jpg | Bin 0 -> 7553 bytes .../res/drawable/gallery_photo_7.jpg | Bin 0 -> 7692 bytes .../res/drawable/gallery_photo_8.jpg | Bin 0 -> 6269 bytes .../res/values/themes.xml | 13 ++++ .../android/leanback/BrowseFragment.java | 42 +++++++---- .../android/leanback/CardPresenter.java | 47 +++++++++++- .../android/leanback/DetailsActivity.java | 6 ++ .../android/leanback/DetailsFragment.java | 37 +++++++-- .../example/android/leanback/PhotoItem.java | 70 ++++++++++++++++++ 15 files changed, 193 insertions(+), 24 deletions(-) create mode 100644 samples/SupportLeanbackDemos/res/drawable/gallery_photo_1.jpg create mode 100644 samples/SupportLeanbackDemos/res/drawable/gallery_photo_2.jpg create mode 100644 samples/SupportLeanbackDemos/res/drawable/gallery_photo_3.jpg create mode 100644 samples/SupportLeanbackDemos/res/drawable/gallery_photo_4.jpg create mode 100644 samples/SupportLeanbackDemos/res/drawable/gallery_photo_5.jpg create mode 100644 samples/SupportLeanbackDemos/res/drawable/gallery_photo_6.jpg create mode 100644 samples/SupportLeanbackDemos/res/drawable/gallery_photo_7.jpg create mode 100644 samples/SupportLeanbackDemos/res/drawable/gallery_photo_8.jpg create mode 100644 samples/SupportLeanbackDemos/res/values/themes.xml create mode 100644 samples/SupportLeanbackDemos/src/com/example/android/leanback/PhotoItem.java diff --git a/samples/SupportLeanbackDemos/AndroidManifest.xml b/samples/SupportLeanbackDemos/AndroidManifest.xml index 3bf462b36..c2b191abf 100644 --- a/samples/SupportLeanbackDemos/AndroidManifest.xml +++ b/samples/SupportLeanbackDemos/AndroidManifest.xml @@ -12,7 +12,7 @@ android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:banner="@drawable/ic_launcher" - android:theme="@style/Theme.Leanback"> + android:theme="@style/Theme.Example.Leanback"> diff --git a/samples/SupportLeanbackDemos/res/drawable/gallery_photo_1.jpg b/samples/SupportLeanbackDemos/res/drawable/gallery_photo_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a2581fe61cd887e11fb40ae203b750c2d3b18e30 GIT binary patch literal 6240 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 literal 0 HcmV?d00001 diff --git a/samples/SupportLeanbackDemos/res/drawable/gallery_photo_2.jpg b/samples/SupportLeanbackDemos/res/drawable/gallery_photo_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..82ba3a8598986b6e61257ad4fc4e83d375af3163 GIT binary patch literal 6146 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 literal 0 HcmV?d00001 diff --git a/samples/SupportLeanbackDemos/res/drawable/gallery_photo_4.jpg b/samples/SupportLeanbackDemos/res/drawable/gallery_photo_4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..70a1c557a8cf7346e167f559e1369f8a76847f75 GIT binary patch literal 4663 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 R-K;pMs|?&^+#o%l|6g?kRVV-e literal 0 HcmV?d00001 diff --git a/samples/SupportLeanbackDemos/res/drawable/gallery_photo_8.jpg b/samples/SupportLeanbackDemos/res/drawable/gallery_photo_8.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dc3aa85832726b118d6e474684821c69a791620b GIT binary patch literal 6269 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 + + diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseFragment.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseFragment.java index f5b259a38..87c75062c 100644 --- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseFragment.java +++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseFragment.java @@ -15,14 +15,19 @@ package com.example.android.leanback; import android.content.Intent; import android.os.Bundle; +import android.support.v4.app.ActivityOptionsCompat; import android.support.v17.leanback.widget.ArrayObjectAdapter; 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.ListRowPresenter; -import android.support.v17.leanback.widget.OnItemClickedListener; +import android.support.v17.leanback.widget.OnItemViewClickedListener; +import android.support.v17.leanback.widget.Presenter; import android.support.v17.leanback.widget.Row; +import android.support.v17.leanback.widget.RowPresenter; import android.util.Log; import android.view.View; +import android.view.ViewGroup; public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragment { private static final String TAG = "leanback.BrowseFragment"; @@ -48,16 +53,13 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm }); setupRows(); - setOnItemClickedListener(new ItemClickedListener()); + setOnItemViewClickedListener(new ItemViewClickedListener()); } private void setupRows() { ListRowPresenter lrp = new ListRowPresenter(); - float density = getActivity().getResources().getDisplayMetrics().density; - float height = 160 * density + 0.5f; - float expandedHeight = height + 52 * density + 0.5f; - lrp.setRowHeight((int)height); - lrp.setExpandedRowHeight((int)expandedHeight); + lrp.setRowHeight(CardPresenter.getRowHeight(getActivity())); + lrp.setExpandedRowHeight(CardPresenter.getExpandedRowHeight(getActivity())); mRowsAdapter = new ArrayObjectAdapter(lrp); @@ -67,8 +69,14 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm for (int i = 0; i < NUM_ROWS; ++i) { ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(cardPresenter); - listRowAdapter.add("Hello world"); - listRowAdapter.add("This is a test"); + listRowAdapter.add(new PhotoItem("Hello world", R.drawable.gallery_photo_1)); + 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)); + listRowAdapter.add(new PhotoItem("Hello world", R.drawable.gallery_photo_5)); + listRowAdapter.add(new PhotoItem("This is a test", R.drawable.gallery_photo_6)); + listRowAdapter.add(new PhotoItem("Android TV", R.drawable.gallery_photo_7)); + listRowAdapter.add(new PhotoItem("Leanback", R.drawable.gallery_photo_8)); HeaderItem header = new HeaderItem(i, "Row " + i, null); mRowsAdapter.add(new ListRow(header, listRowAdapter)); } @@ -76,12 +84,18 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm setAdapter(mRowsAdapter); } - private final class ItemClickedListener implements OnItemClickedListener { - public void onItemClicked(Object item, Row row) { - // TODO: use a fragment transaction instead of launching a new - // activity + private final class ItemViewClickedListener implements OnItemViewClickedListener { + @Override + public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item, + RowPresenter.ViewHolder rowViewHolder, Row row) { Intent intent = new Intent(getActivity(), DetailsActivity.class); - startActivity(intent); + 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); } } } diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/CardPresenter.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/CardPresenter.java index 502c77aea..4c5334288 100644 --- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/CardPresenter.java +++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/CardPresenter.java @@ -13,30 +13,71 @@ */ package com.example.android.leanback; +import android.content.Context; +import android.graphics.drawable.Drawable; import android.support.v17.leanback.widget.ImageCardView; import android.support.v17.leanback.widget.Presenter; import android.util.Log; import android.view.ViewGroup; +import android.view.View.MeasureSpec; +import android.view.ViewGroup.LayoutParams; import android.widget.TextView; public class CardPresenter extends Presenter { private static final String TAG = "CardPresenter"; + private static final int IMAGE_HEIGHT_DP = 120; + + private static int sRowHeight = 0; + private static int sExpandedRowHeight = 0; + + private static void setupRowHeights(Context context) { + if (sRowHeight == 0) { + float density = context.getResources().getDisplayMetrics().density; + int height = (int) (IMAGE_HEIGHT_DP * density + 0.5f); + + ImageCardView v = new ImageCardView(context); + v.setMainImageDimensions(LayoutParams.WRAP_CONTENT, height); + v.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED); + sRowHeight = v.getMeasuredHeight(); + v.setActivated(true); + v.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED); + sExpandedRowHeight = v.getMeasuredHeight(); + } + } + + public static int getRowHeight(Context context) { + setupRowHeights(context); + return sRowHeight; + } + + public static int getExpandedRowHeight(Context context) { + setupRowHeights(context); + return sExpandedRowHeight; + } + + @Override public ViewHolder onCreateViewHolder(ViewGroup parent) { Log.d(TAG, "onCreateViewHolder"); ImageCardView v = new ImageCardView(parent.getContext()); v.setFocusable(true); v.setFocusableInTouchMode(true); - v.setMainImage( - parent.getContext().getResources().getDrawable(R.drawable.text_bg)); + v.setMainImageAdjustViewBounds(true); + v.setMainImageDimensions(LayoutParams.WRAP_CONTENT, getRowHeight(parent.getContext())); return new ViewHolder(v); } + @Override public void onBindViewHolder(ViewHolder viewHolder, Object item) { Log.d(TAG, "onBindViewHolder for " + item.toString()); - ((ImageCardView) viewHolder.view).setTitleText(item.toString()); + PhotoItem photoItem = (PhotoItem) item; + Drawable drawable = viewHolder.view.getContext().getResources() + .getDrawable(photoItem.getImageResourceId()); + ((ImageCardView) viewHolder.view).setMainImage(drawable); + ((ImageCardView) viewHolder.view).setTitleText(photoItem.getTitle()); } + @Override public void onUnbindViewHolder(ViewHolder viewHolder) { Log.d(TAG, "onUnbindViewHolder"); } diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/DetailsActivity.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/DetailsActivity.java index 082b134f5..d74a50a7d 100644 --- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/DetailsActivity.java +++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/DetailsActivity.java @@ -18,11 +18,17 @@ import android.os.Bundle; public class DetailsActivity extends Activity { + public static final String EXTRA_ITEM = "item"; + public static final String SHARED_ELEMENT_NAME = "hero"; + /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.details); + ((DetailsFragment)getFragmentManager().findFragmentById(R.id.details_fragment)) + .setItem((PhotoItem) getIntent().getParcelableExtra(EXTRA_ITEM)); } + } diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/DetailsFragment.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/DetailsFragment.java index c9a85f39f..eb0450225 100644 --- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/DetailsFragment.java +++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/DetailsFragment.java @@ -15,6 +15,8 @@ package com.example.android.leanback; import android.content.res.Resources; import android.os.Bundle; +import android.support.v4.app.ActivityCompat; +import android.support.v4.view.ViewCompat; import android.support.v17.leanback.widget.Action; import android.support.v17.leanback.widget.ArrayObjectAdapter; import android.support.v17.leanback.widget.ClassPresenterSelector; @@ -24,27 +26,31 @@ import android.support.v17.leanback.widget.HeaderItem; import android.support.v17.leanback.widget.ListRow; import android.support.v17.leanback.widget.ListRowPresenter; import android.support.v17.leanback.widget.OnActionClickedListener; +import android.support.v17.leanback.widget.RowPresenter; import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; import android.widget.Toast; +import java.util.ArrayList; + public class DetailsFragment extends android.support.v17.leanback.app.DetailsFragment { private static final String TAG = "leanback.BrowseFragment"; + private static final String ITEM = "item"; private static final int NUM_ROWS = 3; private ArrayObjectAdapter mRowsAdapter; + private PhotoItem mPhotoItem; @Override public void onCreate(Bundle savedInstanceState) { Log.i(TAG, "onCreate"); super.onCreate(savedInstanceState); - setupRows(); - } - - private void setupRows() { ClassPresenterSelector ps = new ClassPresenterSelector(); DetailsOverviewRowPresenter dorPresenter = - new DetailsOverviewRowPresenter(new DetailsDescriptionPresenter()); + new DetailsOverviewRowPresenter(new DetailsDescriptionPresenter()); dorPresenter.setOnActionClickedListener(new OnActionClickedListener() { public void onActionClicked(Action action) { Toast.makeText(getActivity(), action.toString(), Toast.LENGTH_SHORT).show(); @@ -54,11 +60,30 @@ public class DetailsFragment extends android.support.v17.leanback.app.DetailsFra ps.addClassPresenter(DetailsOverviewRow.class, dorPresenter); ps.addClassPresenter(ListRow.class, new ListRowPresenter()); + mRowsAdapter = new ArrayObjectAdapter(ps); + PhotoItem item = (PhotoItem) (savedInstanceState != null ? + savedInstanceState.getParcelable(ITEM) : null); + if (item != null) { + setItem(item); + } + dorPresenter.setSharedElementEnterTransition(getActivity(), + DetailsActivity.SHARED_ELEMENT_NAME); + } + + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putParcelable(ITEM, mPhotoItem); + } + + public void setItem(PhotoItem photoItem) { + mPhotoItem = photoItem; + Resources res = getActivity().getResources(); DetailsOverviewRow dor = new DetailsOverviewRow("Details Overview"); - dor.setImageDrawable(res.getDrawable(R.drawable.details_img)); + dor.setImageDrawable(res.getDrawable(photoItem.getImageResourceId())); dor.addAction(new Action(1, "Buy $9.99")); dor.addAction(new Action(2, "Rent", "$3.99", res.getDrawable(R.drawable.ic_action_a))); mRowsAdapter.add(dor); diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/PhotoItem.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/PhotoItem.java new file mode 100644 index 000000000..be3c8a6b1 --- /dev/null +++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/PhotoItem.java @@ -0,0 +1,70 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ +package com.example.android.leanback; + +import android.os.Parcel; +import android.os.Parcelable; + +public class PhotoItem implements Parcelable { + + private String mTitle; + private int mImageResourceId; + + public PhotoItem(String title, int imageResourceId) { + mTitle = title; + mImageResourceId = imageResourceId; + } + + public int getImageResourceId() { + return mImageResourceId; + } + + public String getTitle() { + return mTitle; + } + + @Override + public String toString() { + return mTitle; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(mTitle); + dest.writeInt(mImageResourceId); + } + + public static final Parcelable.Creator CREATOR + = new Parcelable.Creator() { + @Override + public PhotoItem createFromParcel(Parcel in) { + return new PhotoItem(in); + } + + @Override + public PhotoItem[] newArray(int size) { + return new PhotoItem[size]; + } + }; + + private PhotoItem(Parcel in) { + mTitle = in.readString(); + mImageResourceId = in.readInt(); + } +}