1cc671dd3caac1d0cbf3f6999ab063c9ff1f297b2Dake Gu// CHECKSTYLE:OFF Generated code 271e7e67f320b23feac784b629db17b3bcce08722Dake Gu/* This file is auto-generated from NewDetailsFragment.java. DO NOT MODIFY. */ 371e7e67f320b23feac784b629db17b3bcce08722Dake Gu 471e7e67f320b23feac784b629db17b3bcce08722Dake Gu/* 571e7e67f320b23feac784b629db17b3bcce08722Dake Gu * Copyright (C) 2014 The Android Open Source Project 671e7e67f320b23feac784b629db17b3bcce08722Dake Gu * 771e7e67f320b23feac784b629db17b3bcce08722Dake Gu * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 871e7e67f320b23feac784b629db17b3bcce08722Dake Gu * in compliance with the License. You may obtain a copy of the License at 971e7e67f320b23feac784b629db17b3bcce08722Dake Gu * 1071e7e67f320b23feac784b629db17b3bcce08722Dake Gu * http://www.apache.org/licenses/LICENSE-2.0 1171e7e67f320b23feac784b629db17b3bcce08722Dake Gu * 1271e7e67f320b23feac784b629db17b3bcce08722Dake Gu * Unless required by applicable law or agreed to in writing, software distributed under the License 1371e7e67f320b23feac784b629db17b3bcce08722Dake Gu * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 1471e7e67f320b23feac784b629db17b3bcce08722Dake Gu * or implied. See the License for the specific language governing permissions and limitations under 1571e7e67f320b23feac784b629db17b3bcce08722Dake Gu * the License. 1671e7e67f320b23feac784b629db17b3bcce08722Dake Gu */ 1771e7e67f320b23feac784b629db17b3bcce08722Dake Gupackage com.example.android.leanback; 1871e7e67f320b23feac784b629db17b3bcce08722Dake Gu 19b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Guimport android.content.Context; 2071e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.content.Intent; 21935b033edfd9d03129fce6a5b7a1d3a327b74f91susnataimport android.graphics.Bitmap; 22fc772efa5c0c39d7a59dba5e39f75b4977fbc017Dake Guimport android.graphics.drawable.Drawable; 23290cc49f6210525560e9d6c92fcca3789d28dd7cDake Guimport android.net.Uri; 2471e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.os.Bundle; 2571e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.os.Handler; 26def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport android.util.Log; 27def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport android.view.LayoutInflater; 28def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport android.view.View; 29def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport android.view.ViewGroup; 30def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikas 31def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.core.app.ActivityOptionsCompat; 32def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.core.content.res.ResourcesCompat; 33ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.app.DetailsSupportFragmentBackgroundController; 34ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.media.MediaPlayerAdapter; 35ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.media.MediaPlayerGlue; 36ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.media.PlaybackGlue; 37ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.media.PlaybackTransportControlGlue; 38ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.Action; 39ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.ArrayObjectAdapter; 40ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.ClassPresenterSelector; 41ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.DetailsOverviewRow; 42ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter; 43ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.FullWidthDetailsOverviewSharedElementHelper; 44ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.HeaderItem; 45ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.ImageCardView; 46ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.ListRow; 47ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.ListRowPresenter; 48ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.OnActionClickedListener; 49ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.OnItemViewClickedListener; 50ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.OnItemViewSelectedListener; 51ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.Presenter; 52ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.Row; 53ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.RowPresenter; 54ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.SparseArrayObjectAdapter; 5571e7e67f320b23feac784b629db17b3bcce08722Dake Gu 56ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspublic class NewDetailsSupportFragment extends androidx.leanback.app.DetailsSupportFragment { 57290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu 5871e7e67f320b23feac784b629db17b3bcce08722Dake Gu private static final String TAG = "leanback.DetailsSupportFragment"; 5971e7e67f320b23feac784b629db17b3bcce08722Dake Gu private static final String ITEM = "item"; 6071e7e67f320b23feac784b629db17b3bcce08722Dake Gu 6171e7e67f320b23feac784b629db17b3bcce08722Dake Gu private static final int NUM_ROWS = 3; 6271e7e67f320b23feac784b629db17b3bcce08722Dake Gu private ArrayObjectAdapter mRowsAdapter; 6371e7e67f320b23feac784b629db17b3bcce08722Dake Gu private PhotoItem mPhotoItem; 6471e7e67f320b23feac784b629db17b3bcce08722Dake Gu final CardPresenter cardPresenter = new CardPresenter(); 6571e7e67f320b23feac784b629db17b3bcce08722Dake Gu 6671e7e67f320b23feac784b629db17b3bcce08722Dake Gu private static final int ACTION_PLAY = 1; 6771e7e67f320b23feac784b629db17b3bcce08722Dake Gu private static final int ACTION_RENT = 2; 6871e7e67f320b23feac784b629db17b3bcce08722Dake Gu private static final int ACTION_BUY = 3; 6971e7e67f320b23feac784b629db17b3bcce08722Dake Gu 70290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu private boolean TEST_SHARED_ELEMENT_TRANSITION = true; 715bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu private boolean TEST_BACKGROUND_PLAYER; 7271e7e67f320b23feac784b629db17b3bcce08722Dake Gu 7371e7e67f320b23feac784b629db17b3bcce08722Dake Gu private static final long TIME_TO_LOAD_OVERVIEW_ROW_MS = 1000; 7471e7e67f320b23feac784b629db17b3bcce08722Dake Gu private static final long TIME_TO_LOAD_RELATED_ROWS_MS = 2000; 7571e7e67f320b23feac784b629db17b3bcce08722Dake Gu 7671e7e67f320b23feac784b629db17b3bcce08722Dake Gu private Action mActionPlay; 7771e7e67f320b23feac784b629db17b3bcce08722Dake Gu private Action mActionRent; 7871e7e67f320b23feac784b629db17b3bcce08722Dake Gu private Action mActionBuy; 7971e7e67f320b23feac784b629db17b3bcce08722Dake Gu 8071e7e67f320b23feac784b629db17b3bcce08722Dake Gu private FullWidthDetailsOverviewSharedElementHelper mHelper; 81e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu private BackgroundHelper mBackgroundHelper; // used to download bitmap async. 82e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu private final DetailsSupportFragmentBackgroundController mDetailsBackground = 83e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu new DetailsSupportFragmentBackgroundController(this); 8471e7e67f320b23feac784b629db17b3bcce08722Dake Gu 85290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu void setupTrailerVideo() { 86290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu MediaPlayerGlue mediaPlayerGlue = new MediaPlayerGlue(getActivity()); 87290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu mDetailsBackground.setupVideoPlayback(mediaPlayerGlue); 88290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu mediaPlayerGlue.setMode(MediaPlayerGlue.REPEAT_ONE); 89290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu mediaPlayerGlue.setArtist("A Googler"); 90290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu mediaPlayerGlue.setTitle("Diving with Sharks Trailer"); 91290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu mediaPlayerGlue.setMediaSource(Uri.parse("android.resource://com.example.android.leanback/" 92290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu + "raw/browse")); 93290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu } 94290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu 95290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu void setupMainVideo() { 96290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu Context context = getActivity(); 97290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu MediaPlayerAdapter adapter = new MediaPlayerAdapter(context); 98290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu PlaybackTransportControlGlue<MediaPlayerAdapter> mediaPlayerGlue = 99290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu new PlaybackTransportControlGlue(context, adapter); 100290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu mDetailsBackground.setupVideoPlayback(mediaPlayerGlue); 101290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu mediaPlayerGlue.setSubtitle("A Googler"); 102290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu mediaPlayerGlue.setTitle("Diving with Sharks"); 103290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu mediaPlayerGlue.getPlayerAdapter().setDataSource(Uri.parse( 104290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu "https://storage.googleapis.com/android-tv/Sample videos/April Fool's " 105290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu + "2013/Explore Treasure Mode with Google Maps.mp4")); 106290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu mediaPlayerGlue.addPlayerCallback(new PlaybackGlue.PlayerCallback() { 107290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu @Override 108290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu public void onPreparedStateChanged(PlaybackGlue glue) { 109290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu super.onPreparedStateChanged(glue); 110290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu PlaybackTransportControlGlue controlGlue = (PlaybackTransportControlGlue) glue; 111290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu controlGlue.setSeekProvider(new PlaybackSeekDiskDataProvider( 112290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu controlGlue.getDuration(), 1000, 113290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu "/sdcard/seek/frame_%04d.jpg")); 114290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu } 115290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu }); 11671e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 11771e7e67f320b23feac784b629db17b3bcce08722Dake Gu 11871e7e67f320b23feac784b629db17b3bcce08722Dake Gu @Override 11971e7e67f320b23feac784b629db17b3bcce08722Dake Gu public void onCreate(Bundle savedInstanceState) { 12071e7e67f320b23feac784b629db17b3bcce08722Dake Gu Log.i(TAG, "onCreate"); 12171e7e67f320b23feac784b629db17b3bcce08722Dake Gu super.onCreate(savedInstanceState); 12271e7e67f320b23feac784b629db17b3bcce08722Dake Gu 123181c8847d5a1169e26755ed690131333b7fff7e9Dake Gu mBackgroundHelper = new BackgroundHelper(getActivity()); 124e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu mDetailsBackground.enableParallax(); 1255bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu if (TEST_BACKGROUND_PLAYER) { 126290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu if (MovieData.sStatus == MovieData.STATUS_INIT) { 127290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu // not own/rented, play trailer 128290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu setupTrailerVideo(); 129290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu } else { 130290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu // bought or rented, play the main content 131290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu setupMainVideo(); 132290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu // hide details main ui 133290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu mDetailsBackground.switchToVideo(); 134290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu } 1355bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu } 136181c8847d5a1169e26755ed690131333b7fff7e9Dake Gu 137b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu final Context context = getActivity(); 138b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu setBadgeDrawable(ResourcesCompat.getDrawable(context.getResources(), R.drawable.ic_title, 139b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu context.getTheme())); 14071e7e67f320b23feac784b629db17b3bcce08722Dake Gu setTitle("Leanback Sample App"); 1415bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu if (!TEST_BACKGROUND_PLAYER) { 1425bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu setOnSearchClickedListener(new View.OnClickListener() { 1435bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu @Override 1445bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu public void onClick(View view) { 1455bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu Intent intent = new Intent(getActivity(), SearchSupportActivity.class); 1465bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu startActivity(intent); 1475bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu } 1485bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu }); 1495bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu } 15071e7e67f320b23feac784b629db17b3bcce08722Dake Gu 15171e7e67f320b23feac784b629db17b3bcce08722Dake Gu mActionPlay = new Action(ACTION_PLAY, "Play"); 152b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu mActionRent = new Action(ACTION_RENT, "Rent", "$3.99", ResourcesCompat.getDrawable( 153b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu context.getResources(), R.drawable.ic_action_a, context.getTheme())); 15471e7e67f320b23feac784b629db17b3bcce08722Dake Gu mActionBuy = new Action(ACTION_BUY, "Buy $9.99"); 15571e7e67f320b23feac784b629db17b3bcce08722Dake Gu 15671e7e67f320b23feac784b629db17b3bcce08722Dake Gu ClassPresenterSelector ps = new ClassPresenterSelector(); 15771e7e67f320b23feac784b629db17b3bcce08722Dake Gu FullWidthDetailsOverviewRowPresenter dorPresenter = 15871e7e67f320b23feac784b629db17b3bcce08722Dake Gu new FullWidthDetailsOverviewRowPresenter(new DetailsDescriptionPresenter()); 15971e7e67f320b23feac784b629db17b3bcce08722Dake Gu dorPresenter.setOnActionClickedListener(new OnActionClickedListener() { 16071e7e67f320b23feac784b629db17b3bcce08722Dake Gu @Override 16171e7e67f320b23feac784b629db17b3bcce08722Dake Gu public void onActionClicked(Action action) { 162b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu final Context context = getActivity(); 163290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu DetailsOverviewRow dor = (DetailsOverviewRow) mRowsAdapter.get(0); 16471e7e67f320b23feac784b629db17b3bcce08722Dake Gu if (action.getId() == ACTION_BUY) { 16571e7e67f320b23feac784b629db17b3bcce08722Dake Gu // on the UI thread, we can modify actions adapter directly 16671e7e67f320b23feac784b629db17b3bcce08722Dake Gu SparseArrayObjectAdapter actions = (SparseArrayObjectAdapter) 16771e7e67f320b23feac784b629db17b3bcce08722Dake Gu dor.getActionsAdapter(); 16871e7e67f320b23feac784b629db17b3bcce08722Dake Gu actions.set(ACTION_PLAY, mActionPlay); 16971e7e67f320b23feac784b629db17b3bcce08722Dake Gu actions.clear(ACTION_RENT); 17071e7e67f320b23feac784b629db17b3bcce08722Dake Gu actions.clear(ACTION_BUY); 171290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu boolean previousRented = MovieData.sStatus == MovieData.STATUS_RENTED; 172290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu MovieData.sStatus = MovieData.STATUS_OWN; 173290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu dor.setItem(getDisplayTitle(mPhotoItem.getTitle())); 174b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu dor.setImageDrawable(ResourcesCompat.getDrawable(context.getResources(), 175b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu R.drawable.details_img_16x9, context.getTheme())); 176290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu if (TEST_BACKGROUND_PLAYER) { 177290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu if (!previousRented) { 178290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu setupMainVideo(); 179290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu mDetailsBackground.switchToVideo(); 180290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu } 181290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu } else { 18299e222d5b14544bbb89d402eb704829c642f8abfDake Gu Intent intent = new Intent(context, PlaybackActivity.class); 183290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu getActivity().startActivity(intent); 184290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu } 18571e7e67f320b23feac784b629db17b3bcce08722Dake Gu } else if (action.getId() == ACTION_RENT) { 18671e7e67f320b23feac784b629db17b3bcce08722Dake Gu // on the UI thread, we can modify actions adapter directly 18771e7e67f320b23feac784b629db17b3bcce08722Dake Gu SparseArrayObjectAdapter actions = (SparseArrayObjectAdapter) 18871e7e67f320b23feac784b629db17b3bcce08722Dake Gu dor.getActionsAdapter(); 18971e7e67f320b23feac784b629db17b3bcce08722Dake Gu actions.set(ACTION_PLAY, mActionPlay); 19071e7e67f320b23feac784b629db17b3bcce08722Dake Gu actions.clear(ACTION_RENT); 191290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu MovieData.sStatus = MovieData.STATUS_RENTED; 192290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu dor.setItem(getDisplayTitle(mPhotoItem.getTitle())); 193290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu if (TEST_BACKGROUND_PLAYER) { 194290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu setupMainVideo(); 195290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu mDetailsBackground.switchToVideo(); 196290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu } else { 19799e222d5b14544bbb89d402eb704829c642f8abfDake Gu Intent intent = new Intent(context, PlaybackActivity.class); 198290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu getActivity().startActivity(intent); 199290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu } 20071e7e67f320b23feac784b629db17b3bcce08722Dake Gu } else if (action.getId() == ACTION_PLAY) { 201290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu if (TEST_BACKGROUND_PLAYER) { 202290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu mDetailsBackground.switchToVideo(); 203290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu } else { 20499e222d5b14544bbb89d402eb704829c642f8abfDake Gu Intent intent = new Intent(context, PlaybackActivity.class); 205290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu getActivity().startActivity(intent); 206290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu } 20771e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 20871e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 20971e7e67f320b23feac784b629db17b3bcce08722Dake Gu }); 21071e7e67f320b23feac784b629db17b3bcce08722Dake Gu 21171e7e67f320b23feac784b629db17b3bcce08722Dake Gu ps.addClassPresenter(DetailsOverviewRow.class, dorPresenter); 21271e7e67f320b23feac784b629db17b3bcce08722Dake Gu ps.addClassPresenter(ListRow.class, new ListRowPresenter()); 21371e7e67f320b23feac784b629db17b3bcce08722Dake Gu 21471e7e67f320b23feac784b629db17b3bcce08722Dake Gu mRowsAdapter = new ArrayObjectAdapter(ps); 2155bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu updateAdapter(); 21671e7e67f320b23feac784b629db17b3bcce08722Dake Gu 21771e7e67f320b23feac784b629db17b3bcce08722Dake Gu setOnItemViewClickedListener(new OnItemViewClickedListener() { 21871e7e67f320b23feac784b629db17b3bcce08722Dake Gu @Override 21971e7e67f320b23feac784b629db17b3bcce08722Dake Gu public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item, 220290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu RowPresenter.ViewHolder rowViewHolder, Row row) { 22171e7e67f320b23feac784b629db17b3bcce08722Dake Gu Log.i(TAG, "onItemClicked: " + item + " row " + row); 2224702556bfd15c9819a7b2af759aee0f719cd631fsusnata if (item instanceof PhotoItem) { 22371e7e67f320b23feac784b629db17b3bcce08722Dake Gu Intent intent = new Intent(getActivity(), DetailsSupportActivity.class); 22471e7e67f320b23feac784b629db17b3bcce08722Dake Gu intent.putExtra(DetailsSupportActivity.EXTRA_ITEM, (PhotoItem) item); 22571e7e67f320b23feac784b629db17b3bcce08722Dake Gu 22671e7e67f320b23feac784b629db17b3bcce08722Dake Gu Bundle bundle = ActivityOptionsCompat.makeSceneTransitionAnimation( 22771e7e67f320b23feac784b629db17b3bcce08722Dake Gu getActivity(), 2284702556bfd15c9819a7b2af759aee0f719cd631fsusnata ((ImageCardView) itemViewHolder.view).getMainImageView(), 22971e7e67f320b23feac784b629db17b3bcce08722Dake Gu DetailsSupportActivity.SHARED_ELEMENT_NAME).toBundle(); 23071e7e67f320b23feac784b629db17b3bcce08722Dake Gu getActivity().startActivity(intent, bundle); 23171e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 23271e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 23371e7e67f320b23feac784b629db17b3bcce08722Dake Gu }); 23471e7e67f320b23feac784b629db17b3bcce08722Dake Gu setOnItemViewSelectedListener(new OnItemViewSelectedListener() { 23571e7e67f320b23feac784b629db17b3bcce08722Dake Gu @Override 23671e7e67f320b23feac784b629db17b3bcce08722Dake Gu public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item, 237290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu RowPresenter.ViewHolder rowViewHolder, Row row) { 23871e7e67f320b23feac784b629db17b3bcce08722Dake Gu Log.i(TAG, "onItemSelected: " + item + " row " + row); 23971e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 24071e7e67f320b23feac784b629db17b3bcce08722Dake Gu }); 24171e7e67f320b23feac784b629db17b3bcce08722Dake Gu 24271e7e67f320b23feac784b629db17b3bcce08722Dake Gu if (TEST_SHARED_ELEMENT_TRANSITION) { 24371e7e67f320b23feac784b629db17b3bcce08722Dake Gu mHelper = new FullWidthDetailsOverviewSharedElementHelper(); 24471e7e67f320b23feac784b629db17b3bcce08722Dake Gu mHelper.setSharedElementEnterTransition(getActivity(), 24571e7e67f320b23feac784b629db17b3bcce08722Dake Gu DetailsSupportActivity.SHARED_ELEMENT_NAME); 24671e7e67f320b23feac784b629db17b3bcce08722Dake Gu dorPresenter.setListener(mHelper); 24771e7e67f320b23feac784b629db17b3bcce08722Dake Gu dorPresenter.setParticipatingEntranceTransition(false); 24871e7e67f320b23feac784b629db17b3bcce08722Dake Gu } else { 24971e7e67f320b23feac784b629db17b3bcce08722Dake Gu dorPresenter.setParticipatingEntranceTransition(true); 25071e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 25171e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 25271e7e67f320b23feac784b629db17b3bcce08722Dake Gu 253181c8847d5a1169e26755ed690131333b7fff7e9Dake Gu @Override 254181c8847d5a1169e26755ed690131333b7fff7e9Dake Gu public View onCreateView(LayoutInflater inflater, ViewGroup container, 255290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu Bundle savedInstanceState) { 256181c8847d5a1169e26755ed690131333b7fff7e9Dake Gu View view = super.onCreateView(inflater, container, savedInstanceState); 257181c8847d5a1169e26755ed690131333b7fff7e9Dake Gu return view; 258181c8847d5a1169e26755ed690131333b7fff7e9Dake Gu } 259181c8847d5a1169e26755ed690131333b7fff7e9Dake Gu 2605bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu public void setBackgroundVideo(boolean backgroundVideo) { 2615bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu TEST_BACKGROUND_PLAYER = backgroundVideo; 2625bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu } 2635bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu 26471e7e67f320b23feac784b629db17b3bcce08722Dake Gu public void setItem(PhotoItem photoItem) { 26571e7e67f320b23feac784b629db17b3bcce08722Dake Gu mPhotoItem = photoItem; 2665bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu updateAdapter(); 2675bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu } 26871e7e67f320b23feac784b629db17b3bcce08722Dake Gu 269290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu static String getDisplayTitle(String title) { 270290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu switch (MovieData.sStatus) { 271290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu case MovieData.STATUS_OWN: 272290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu title = title + "(Owned)"; 273290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu break; 274290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu case MovieData.STATUS_RENTED: 275290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu title = title + "(Rented)"; 276290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu break; 277290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu case MovieData.STATUS_INIT: 278290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu default: 279290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu } 280290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu return title; 281290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu } 282290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu 2835bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu void updateAdapter() { 2845bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu if (mRowsAdapter == null) { 2855bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu return; 2865bcc058bb1aed2e88b38009e83084554cf2cd86bDake Gu } 28771e7e67f320b23feac784b629db17b3bcce08722Dake Gu mRowsAdapter.clear(); 28871e7e67f320b23feac784b629db17b3bcce08722Dake Gu new Handler().postDelayed(new Runnable() { 289e2104f4b5c8e3ad63570306a25e61502dfe4c418Aurimas Liutikas @Override 29071e7e67f320b23feac784b629db17b3bcce08722Dake Gu public void run() { 2913649f8fb98e56cbdde7e9c5806312372b20a4d23Chulwoo Lee final Context context = getActivity(); 2923649f8fb98e56cbdde7e9c5806312372b20a4d23Chulwoo Lee if (context == null) { 2933649f8fb98e56cbdde7e9c5806312372b20a4d23Chulwoo Lee return; 2943649f8fb98e56cbdde7e9c5806312372b20a4d23Chulwoo Lee } 29571e7e67f320b23feac784b629db17b3bcce08722Dake Gu 296290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu DetailsOverviewRow dor = new DetailsOverviewRow( 297290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu getDisplayTitle(mPhotoItem.getTitle())); 298b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu dor.setImageDrawable(ResourcesCompat.getDrawable(context.getResources(), 299b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu mPhotoItem.getImageResourceId(), context.getTheme())); 30071e7e67f320b23feac784b629db17b3bcce08722Dake Gu SparseArrayObjectAdapter adapter = new SparseArrayObjectAdapter(); 301290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu switch (MovieData.sStatus) { 302290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu case MovieData.STATUS_INIT: 303290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu adapter.set(ACTION_RENT, mActionRent); 304290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu adapter.set(ACTION_BUY, mActionBuy); 305290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu break; 306290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu case MovieData.STATUS_OWN: 307290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu adapter.set(ACTION_PLAY, mActionPlay); 308290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu break; 309290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu case MovieData.STATUS_RENTED: 310290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu adapter.set(ACTION_PLAY, mActionPlay); 311290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu adapter.set(ACTION_BUY, mActionBuy); 312290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu break; 313290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu } 314fc772efa5c0c39d7a59dba5e39f75b4977fbc017Dake Gu // one line text with icon 315fc772efa5c0c39d7a59dba5e39f75b4977fbc017Dake Gu Drawable d = ResourcesCompat.getDrawable(context.getResources(), 316fc772efa5c0c39d7a59dba5e39f75b4977fbc017Dake Gu R.drawable.ic_action_a, context.getTheme()); 317fc772efa5c0c39d7a59dba5e39f75b4977fbc017Dake Gu adapter.set(202, new Action(202, "Top", null, d)); 31871e7e67f320b23feac784b629db17b3bcce08722Dake Gu dor.setActionsAdapter(adapter); 319290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu mRowsAdapter.add(0, dor); 32071e7e67f320b23feac784b629db17b3bcce08722Dake Gu setSelectedPosition(0, true); 32171e7e67f320b23feac784b629db17b3bcce08722Dake Gu if (TEST_SHARED_ELEMENT_TRANSITION) { 32271e7e67f320b23feac784b629db17b3bcce08722Dake Gu if (mHelper != null && !mHelper.getAutoStartSharedElementTransition()) { 32371e7e67f320b23feac784b629db17b3bcce08722Dake Gu mHelper.startPostponedEnterTransition(); 32471e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 32571e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 32671e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 32771e7e67f320b23feac784b629db17b3bcce08722Dake Gu }, TIME_TO_LOAD_OVERVIEW_ROW_MS); 32871e7e67f320b23feac784b629db17b3bcce08722Dake Gu 32971e7e67f320b23feac784b629db17b3bcce08722Dake Gu new Handler().postDelayed(new Runnable() { 330e2104f4b5c8e3ad63570306a25e61502dfe4c418Aurimas Liutikas @Override 33171e7e67f320b23feac784b629db17b3bcce08722Dake Gu public void run() { 3323649f8fb98e56cbdde7e9c5806312372b20a4d23Chulwoo Lee if (getActivity() == null) { 3333649f8fb98e56cbdde7e9c5806312372b20a4d23Chulwoo Lee return; 3343649f8fb98e56cbdde7e9c5806312372b20a4d23Chulwoo Lee } 33571e7e67f320b23feac784b629db17b3bcce08722Dake Gu for (int i = 0; i < NUM_ROWS; ++i) { 33671e7e67f320b23feac784b629db17b3bcce08722Dake Gu ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(cardPresenter); 33771e7e67f320b23feac784b629db17b3bcce08722Dake Gu listRowAdapter.add(new PhotoItem("Hello world", R.drawable.gallery_photo_1)); 33871e7e67f320b23feac784b629db17b3bcce08722Dake Gu listRowAdapter.add(new PhotoItem("This is a test", R.drawable.gallery_photo_2)); 33971e7e67f320b23feac784b629db17b3bcce08722Dake Gu listRowAdapter.add(new PhotoItem("Android TV", R.drawable.gallery_photo_3)); 34071e7e67f320b23feac784b629db17b3bcce08722Dake Gu listRowAdapter.add(new PhotoItem("Leanback", R.drawable.gallery_photo_4)); 34171e7e67f320b23feac784b629db17b3bcce08722Dake Gu HeaderItem header = new HeaderItem(i, "Row " + i); 34271e7e67f320b23feac784b629db17b3bcce08722Dake Gu mRowsAdapter.add(new ListRow(header, listRowAdapter)); 34371e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 34471e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 34571e7e67f320b23feac784b629db17b3bcce08722Dake Gu }, TIME_TO_LOAD_RELATED_ROWS_MS); 34671e7e67f320b23feac784b629db17b3bcce08722Dake Gu setAdapter(mRowsAdapter); 34771e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 34871e7e67f320b23feac784b629db17b3bcce08722Dake Gu 349935b033edfd9d03129fce6a5b7a1d3a327b74f91susnata @Override 3504702556bfd15c9819a7b2af759aee0f719cd631fsusnata public void onStart() { 3514702556bfd15c9819a7b2af759aee0f719cd631fsusnata super.onStart(); 3524702556bfd15c9819a7b2af759aee0f719cd631fsusnata 3530908efd712e79f77e0cf9307bd5c32753c855561Dake Gu // Restore background drawable in onStart(): 3540908efd712e79f77e0cf9307bd5c32753c855561Dake Gu mBackgroundHelper.loadBitmap(R.drawable.spiderman, 3550908efd712e79f77e0cf9307bd5c32753c855561Dake Gu new BackgroundHelper.BitmapLoadCallback() { 356290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu @Override 357290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu public void onBitmapLoaded(Bitmap bitmap) { 358290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu mDetailsBackground.setCoverBitmap(bitmap); 359290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu } 360290cc49f6210525560e9d6c92fcca3789d28dd7cDake Gu }); 361935b033edfd9d03129fce6a5b7a1d3a327b74f91susnata } 362180dc4030628425a8081fe058bdc1d529c505ae8susnata 3634702556bfd15c9819a7b2af759aee0f719cd631fsusnata @Override 3644702556bfd15c9819a7b2af759aee0f719cd631fsusnata public void onStop() { 365e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu mDetailsBackground.setCoverBitmap(null); 3664702556bfd15c9819a7b2af759aee0f719cd631fsusnata super.onStop(); 367180dc4030628425a8081fe058bdc1d529c505ae8susnata } 36871e7e67f320b23feac784b629db17b3bcce08722Dake Gu} 369