BrowseSupportFragment.java revision 8f94d180902da7469b67f7c47c93a3a0b9acdb3a
171e7e67f320b23feac784b629db17b3bcce08722Dake Gu/* This file is auto-generated from BrowseFragment.java. DO NOT MODIFY. */ 271e7e67f320b23feac784b629db17b3bcce08722Dake Gu 371e7e67f320b23feac784b629db17b3bcce08722Dake Gu/* 471e7e67f320b23feac784b629db17b3bcce08722Dake Gu * Copyright (C) 2014 The Android Open Source Project 571e7e67f320b23feac784b629db17b3bcce08722Dake Gu * 671e7e67f320b23feac784b629db17b3bcce08722Dake Gu * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 771e7e67f320b23feac784b629db17b3bcce08722Dake Gu * in compliance with the License. You may obtain a copy of the License at 871e7e67f320b23feac784b629db17b3bcce08722Dake Gu * 971e7e67f320b23feac784b629db17b3bcce08722Dake Gu * http://www.apache.org/licenses/LICENSE-2.0 1071e7e67f320b23feac784b629db17b3bcce08722Dake Gu * 1171e7e67f320b23feac784b629db17b3bcce08722Dake Gu * Unless required by applicable law or agreed to in writing, software distributed under the License 1271e7e67f320b23feac784b629db17b3bcce08722Dake Gu * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 1371e7e67f320b23feac784b629db17b3bcce08722Dake Gu * or implied. See the License for the specific language governing permissions and limitations under 1471e7e67f320b23feac784b629db17b3bcce08722Dake Gu * the License. 1571e7e67f320b23feac784b629db17b3bcce08722Dake Gu */ 1671e7e67f320b23feac784b629db17b3bcce08722Dake Gupackage com.example.android.leanback; 1771e7e67f320b23feac784b629db17b3bcce08722Dake Gu 18c578ad430b51de0151ca9b3299d84f73bb71286bsusnataimport android.support.v4.app.Fragment; 1971e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.content.Intent; 2071e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.os.Bundle; 2171e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.os.Handler; 2271e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.app.GuidedStepSupportFragment; 23c578ad430b51de0151ca9b3299d84f73bb71286bsusnataimport android.support.v17.leanback.app.RowsSupportFragment; 2471e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.ArrayObjectAdapter; 258f94d180902da7469b67f7c47c93a3a0b9acdb3asusnataimport android.support.v17.leanback.widget.DividerRow; 2671e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.HeaderItem; 2771e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.ImageCardView; 2871e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.ListRow; 2971e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.ListRowPresenter; 3071e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.OnItemViewClickedListener; 3171e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.OnItemViewSelectedListener; 32c578ad430b51de0151ca9b3299d84f73bb71286bsusnataimport android.support.v17.leanback.widget.PageRow; 3371e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.Presenter; 3471e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.Row; 3571e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.RowPresenter; 368f94d180902da7469b67f7c47c93a3a0b9acdb3asusnataimport android.support.v17.leanback.widget.SectionRow; 3720767a171ab46addb5d50248d4267db14c0c8883susnataimport android.support.v4.app.ActivityOptionsCompat; 3871e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.util.Log; 39c578ad430b51de0151ca9b3299d84f73bb71286bsusnataimport android.view.LayoutInflater; 4071e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.view.View; 4171e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.view.ViewGroup; 4271e7e67f320b23feac784b629db17b3bcce08722Dake Gu 4371e7e67f320b23feac784b629db17b3bcce08722Dake Gupublic class BrowseSupportFragment extends android.support.v17.leanback.app.BrowseSupportFragment { 4471e7e67f320b23feac784b629db17b3bcce08722Dake Gu private static final String TAG = "leanback.BrowseSupportFragment"; 4571e7e67f320b23feac784b629db17b3bcce08722Dake Gu 4671e7e67f320b23feac784b629db17b3bcce08722Dake Gu private static final boolean TEST_ENTRANCE_TRANSITION = true; 47380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata private static final int NUM_ROWS = 8; 48380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata private static final long HEADER_ID1 = 1001; 49380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata private static final long HEADER_ID2 = 1002; 508f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata private static final long HEADER_ID3 = 1003; 5171e7e67f320b23feac784b629db17b3bcce08722Dake Gu 5271e7e67f320b23feac784b629db17b3bcce08722Dake Gu private ArrayObjectAdapter mRowsAdapter; 5371e7e67f320b23feac784b629db17b3bcce08722Dake Gu private BackgroundHelper mBackgroundHelper = new BackgroundHelper(); 5471e7e67f320b23feac784b629db17b3bcce08722Dake Gu 5571e7e67f320b23feac784b629db17b3bcce08722Dake Gu // For good performance, it's important to use a single instance of 5671e7e67f320b23feac784b629db17b3bcce08722Dake Gu // a card presenter for all rows using that presenter. 5787b904ffa106f12f2fecfe8b9a46084863678f29Dake Gu final CardPresenter mCardPresenter = new CardPresenter(); 5887b904ffa106f12f2fecfe8b9a46084863678f29Dake Gu final CardPresenter mCardPresenter2 = new CardPresenter(R.style.MyImageCardViewTheme); 5971e7e67f320b23feac784b629db17b3bcce08722Dake Gu 60c578ad430b51de0151ca9b3299d84f73bb71286bsusnata public BrowseSupportFragment() { 61380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata getMainFragmentRegistry().registerFragment(PageRow.class, new PageRowFragmentFactory()); 62c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 63c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 6471e7e67f320b23feac784b629db17b3bcce08722Dake Gu @Override 6571e7e67f320b23feac784b629db17b3bcce08722Dake Gu public void onCreate(Bundle savedInstanceState) { 6671e7e67f320b23feac784b629db17b3bcce08722Dake Gu Log.i(TAG, "onCreate"); 6771e7e67f320b23feac784b629db17b3bcce08722Dake Gu super.onCreate(savedInstanceState); 6871e7e67f320b23feac784b629db17b3bcce08722Dake Gu 6971e7e67f320b23feac784b629db17b3bcce08722Dake Gu setBadgeDrawable(getActivity().getResources().getDrawable(R.drawable.ic_title)); 7071e7e67f320b23feac784b629db17b3bcce08722Dake Gu setTitle("Leanback Sample App"); 7171e7e67f320b23feac784b629db17b3bcce08722Dake Gu setHeadersState(HEADERS_ENABLED); 72380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata setupRows(); 7371e7e67f320b23feac784b629db17b3bcce08722Dake Gu setOnSearchClickedListener(new View.OnClickListener() { 7471e7e67f320b23feac784b629db17b3bcce08722Dake Gu @Override 7571e7e67f320b23feac784b629db17b3bcce08722Dake Gu public void onClick(View view) { 7671e7e67f320b23feac784b629db17b3bcce08722Dake Gu Intent intent = new Intent(getActivity(), SearchSupportActivity.class); 7771e7e67f320b23feac784b629db17b3bcce08722Dake Gu startActivity(intent); 7871e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 7971e7e67f320b23feac784b629db17b3bcce08722Dake Gu }); 8071e7e67f320b23feac784b629db17b3bcce08722Dake Gu 8171e7e67f320b23feac784b629db17b3bcce08722Dake Gu setOnItemViewClickedListener(new ItemViewClickedListener()); 8271e7e67f320b23feac784b629db17b3bcce08722Dake Gu setOnItemViewSelectedListener(new OnItemViewSelectedListener() { 8371e7e67f320b23feac784b629db17b3bcce08722Dake Gu @Override 8471e7e67f320b23feac784b629db17b3bcce08722Dake Gu public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item, 8571e7e67f320b23feac784b629db17b3bcce08722Dake Gu RowPresenter.ViewHolder rowViewHolder, Row row) { 8671e7e67f320b23feac784b629db17b3bcce08722Dake Gu Log.i(TAG, "onItemSelected: " + item + " row " + row); 8771e7e67f320b23feac784b629db17b3bcce08722Dake Gu 8871e7e67f320b23feac784b629db17b3bcce08722Dake Gu if (isShowingHeaders()) { 8971e7e67f320b23feac784b629db17b3bcce08722Dake Gu mBackgroundHelper.setBackground(getActivity(), null); 90c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } else if (item instanceof PhotoItem) { 9171e7e67f320b23feac784b629db17b3bcce08722Dake Gu mBackgroundHelper.setBackground( 9271e7e67f320b23feac784b629db17b3bcce08722Dake Gu getActivity(), ((PhotoItem) item).getImageResourceId()); 9371e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 9471e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 9571e7e67f320b23feac784b629db17b3bcce08722Dake Gu }); 9671e7e67f320b23feac784b629db17b3bcce08722Dake Gu if (TEST_ENTRANCE_TRANSITION) { 9771e7e67f320b23feac784b629db17b3bcce08722Dake Gu // don't run entrance transition if fragment is restored. 9871e7e67f320b23feac784b629db17b3bcce08722Dake Gu if (savedInstanceState == null) { 9971e7e67f320b23feac784b629db17b3bcce08722Dake Gu prepareEntranceTransition(); 10071e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 10171e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 102380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata 10371e7e67f320b23feac784b629db17b3bcce08722Dake Gu // simulates in a real world use case data being loaded two seconds later 10471e7e67f320b23feac784b629db17b3bcce08722Dake Gu new Handler().postDelayed(new Runnable() { 10571e7e67f320b23feac784b629db17b3bcce08722Dake Gu public void run() { 10671e7e67f320b23feac784b629db17b3bcce08722Dake Gu loadData(); 10771e7e67f320b23feac784b629db17b3bcce08722Dake Gu startEntranceTransition(); 10871e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 10971e7e67f320b23feac784b629db17b3bcce08722Dake Gu }, 2000); 11071e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 11171e7e67f320b23feac784b629db17b3bcce08722Dake Gu 112c578ad430b51de0151ca9b3299d84f73bb71286bsusnata @Override 113c578ad430b51de0151ca9b3299d84f73bb71286bsusnata public View onCreateView( 114c578ad430b51de0151ca9b3299d84f73bb71286bsusnata LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 115c578ad430b51de0151ca9b3299d84f73bb71286bsusnata return super.onCreateView(inflater, container, savedInstanceState); 116c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 11771e7e67f320b23feac784b629db17b3bcce08722Dake Gu 118c578ad430b51de0151ca9b3299d84f73bb71286bsusnata private void setupRows() { 1195635fbd2da9e73c8f68287626728f909565c7a8aDake Gu mRowsAdapter = new ArrayObjectAdapter(new ListRowPresenter()); 12071e7e67f320b23feac784b629db17b3bcce08722Dake Gu setAdapter(mRowsAdapter); 12171e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 12271e7e67f320b23feac784b629db17b3bcce08722Dake Gu 12371e7e67f320b23feac784b629db17b3bcce08722Dake Gu private void loadData() { 124c578ad430b51de0151ca9b3299d84f73bb71286bsusnata int i = 0; 125380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata 1265635fbd2da9e73c8f68287626728f909565c7a8aDake Gu mRowsAdapter.add(new PageRow(new HeaderItem(HEADER_ID1, "Page Row 0"))); 1275635fbd2da9e73c8f68287626728f909565c7a8aDake Gu mRowsAdapter.add(new DividerRow()); 128380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata 1295635fbd2da9e73c8f68287626728f909565c7a8aDake Gu mRowsAdapter.add(new SectionRow(new HeaderItem("section 0"))); 130c578ad430b51de0151ca9b3299d84f73bb71286bsusnata for (; i < NUM_ROWS; ++i) { 1315635fbd2da9e73c8f68287626728f909565c7a8aDake Gu mRowsAdapter.add(new ListRow(new HeaderItem(i, "Row " + i), createListRowAdapter(i))); 13271e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 13371e7e67f320b23feac784b629db17b3bcce08722Dake Gu 1345635fbd2da9e73c8f68287626728f909565c7a8aDake Gu mRowsAdapter.add(new DividerRow()); 1355635fbd2da9e73c8f68287626728f909565c7a8aDake Gu mRowsAdapter.add(new PageRow(new HeaderItem(HEADER_ID2, "Page Row 1"))); 1368f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata 1378f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata mRowsAdapter.add(new PageRow(new HeaderItem(HEADER_ID3, "Page Row 2"))); 138c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 139c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 140c578ad430b51de0151ca9b3299d84f73bb71286bsusnata private ArrayObjectAdapter createListRowAdapter(int i) { 141c578ad430b51de0151ca9b3299d84f73bb71286bsusnata ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter((i & 1) == 0 ? 142c578ad430b51de0151ca9b3299d84f73bb71286bsusnata mCardPresenter : mCardPresenter2); 143c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 144c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Hello world", 145c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_1)); 146c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 147c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "This is a test", 148c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Only a test", 149c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_2)); 150c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 151c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Android TV", 152c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "by Google", 153c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_3)); 154c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 155c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Leanback", 156c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_4)); 157c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 158c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "GuidedStep (Slide left/right)", 159c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_5)); 160c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 161c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "GuidedStep (Slide bottom up)", 162c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Open GuidedStepSupportFragment", 163c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_6)); 164c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 165c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Android TV", 166c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "open RowsSupportActivity", 167c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_7)); 168c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 169c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Leanback", 170c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "open BrowseSupportActivity", 171c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_8)); 1728f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata listRowAdapter.add(new PhotoItem( 1738f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata "Leanback", 1748f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata "open BrowseSupportActivity", 1758f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata R.drawable.gallery_photo_8)); 1768f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata listRowAdapter.add(new PhotoItem( 1778f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata "Leanback", 1788f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata "open BrowseSupportActivity", 1798f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata R.drawable.gallery_photo_8)); 180c578ad430b51de0151ca9b3299d84f73bb71286bsusnata return listRowAdapter; 18171e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 18271e7e67f320b23feac784b629db17b3bcce08722Dake Gu 18371e7e67f320b23feac784b629db17b3bcce08722Dake Gu private final class ItemViewClickedListener implements OnItemViewClickedListener { 18471e7e67f320b23feac784b629db17b3bcce08722Dake Gu @Override 18571e7e67f320b23feac784b629db17b3bcce08722Dake Gu public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item, 18671e7e67f320b23feac784b629db17b3bcce08722Dake Gu RowPresenter.ViewHolder rowViewHolder, Row row) { 18771e7e67f320b23feac784b629db17b3bcce08722Dake Gu 18871e7e67f320b23feac784b629db17b3bcce08722Dake Gu Intent intent; 18971e7e67f320b23feac784b629db17b3bcce08722Dake Gu Bundle bundle; 19071e7e67f320b23feac784b629db17b3bcce08722Dake Gu if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_6) { 19171e7e67f320b23feac784b629db17b3bcce08722Dake Gu GuidedStepSupportFragment.add(getFragmentManager(), 19220767a171ab46addb5d50248d4267db14c0c8883susnata new GuidedStepSupportHalfScreenActivity.FirstStepFragment(), 193ee3c13ee552002263be40f6a5986f61c605b0bacDake Gu R.id.lb_guidedstep_host); 19471e7e67f320b23feac784b629db17b3bcce08722Dake Gu return; 19520767a171ab46addb5d50248d4267db14c0c8883susnata } else if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_5) { 19620767a171ab46addb5d50248d4267db14c0c8883susnata GuidedStepSupportFragment.add(getFragmentManager(), 197c578ad430b51de0151ca9b3299d84f73bb71286bsusnata new GuidedStepSupportActivity.FirstStepFragment(), R.id.lb_guidedstep_host); 198c578ad430b51de0151ca9b3299d84f73bb71286bsusnata return; 199c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } else if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_8) { 20071e7e67f320b23feac784b629db17b3bcce08722Dake Gu intent = new Intent(getActivity(), BrowseSupportActivity.class); 20171e7e67f320b23feac784b629db17b3bcce08722Dake Gu bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity()) 20271e7e67f320b23feac784b629db17b3bcce08722Dake Gu .toBundle(); 203c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } else if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_7) { 20471e7e67f320b23feac784b629db17b3bcce08722Dake Gu intent = new Intent(getActivity(), RowsSupportActivity.class); 20571e7e67f320b23feac784b629db17b3bcce08722Dake Gu bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity()) 20671e7e67f320b23feac784b629db17b3bcce08722Dake Gu .toBundle(); 20771e7e67f320b23feac784b629db17b3bcce08722Dake Gu } else { 20871e7e67f320b23feac784b629db17b3bcce08722Dake Gu intent = new Intent(getActivity(), DetailsSupportActivity.class); 20971e7e67f320b23feac784b629db17b3bcce08722Dake Gu intent.putExtra(DetailsSupportActivity.EXTRA_ITEM, (PhotoItem) item); 21071e7e67f320b23feac784b629db17b3bcce08722Dake Gu bundle = ActivityOptionsCompat.makeSceneTransitionAnimation( 21171e7e67f320b23feac784b629db17b3bcce08722Dake Gu getActivity(), 212c578ad430b51de0151ca9b3299d84f73bb71286bsusnata ((ImageCardView) itemViewHolder.view).getMainImageView(), 21371e7e67f320b23feac784b629db17b3bcce08722Dake Gu DetailsSupportActivity.SHARED_ELEMENT_NAME).toBundle(); 21471e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 21571e7e67f320b23feac784b629db17b3bcce08722Dake Gu getActivity().startActivity(intent, bundle); 21671e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 21771e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 218c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 219380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata public static class PageRowFragmentFactory extends FragmentFactory { 220c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 221c578ad430b51de0151ca9b3299d84f73bb71286bsusnata @Override 222380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata public Fragment createFragment(Object rowObj) { 223380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata Row row = (Row) rowObj; 224380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata if (row.getHeaderItem().getId() == HEADER_ID1) { 225380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata return new SampleFragment(); 226380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata } else if (row.getHeaderItem().getId() == HEADER_ID2) { 227380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata return new SampleRowsSupportFragment(); 2288f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata } else if (row.getHeaderItem().getId() == HEADER_ID3) { 2298f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata return new SampleFragment(); 230c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 231380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata 232380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata return null; 233c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 234c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 235c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 236380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata public static class PageFragmentAdapterImpl extends MainFragmentAdapter<SampleFragment> { 237c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 238380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata public PageFragmentAdapterImpl(SampleFragment fragment) { 239380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata super(fragment); 240c578ad430b51de0151ca9b3299d84f73bb71286bsusnata setScalingEnabled(true); 241c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 242acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu 243acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu @Override 244acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu public void setEntranceTransitionState(boolean state) { 245acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu getFragment().setEntranceTransitionState(state); 246acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu } 247c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 248c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 249380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata public static class SampleRowsSupportFragment extends RowsSupportFragment { 250c578ad430b51de0151ca9b3299d84f73bb71286bsusnata final CardPresenter mCardPresenter = new CardPresenter(); 251c578ad430b51de0151ca9b3299d84f73bb71286bsusnata final CardPresenter mCardPresenter2 = new CardPresenter(R.style.MyImageCardViewTheme); 252c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 253380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata public SampleRowsSupportFragment() { 254380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata ArrayObjectAdapter adapter = new ArrayObjectAdapter(new ListRowPresenter()); 255380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata for (int i = 0; i < 4; i++) { 256380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata ListRow row = new ListRow(new HeaderItem("Row " + i), createListRowAdapter(i)); 257380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata adapter.add(row); 258c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 259380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata setAdapter(adapter); 260380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata 261380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata setOnItemViewClickedListener(new OnItemViewClickedListener() { 262380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata @Override 2638f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item, RowPresenter.ViewHolder rowViewHolder, Row row) { 2648f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata Intent intent; 2658f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata Bundle bundle; 2668f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_6) { 2678f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata GuidedStepSupportFragment.add(getFragmentManager(), 2688f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata new GuidedStepSupportHalfScreenActivity.FirstStepFragment(), 2698f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata R.id.lb_guidedstep_host); 2708f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata return; 2718f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata } else if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_5) { 2728f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata GuidedStepSupportFragment.add(getFragmentManager(), 2738f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata new GuidedStepSupportActivity.FirstStepFragment(), R.id.lb_guidedstep_host); 2748f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata return; 2758f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata } else if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_8) { 2768f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata intent = new Intent(getActivity(), BrowseSupportActivity.class); 2778f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity()) 2788f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata .toBundle(); 2798f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata } else if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_7) { 2808f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata intent = new Intent(getActivity(), RowsSupportActivity.class); 2818f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity()) 2828f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata .toBundle(); 2838f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata } else { 2848f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata intent = new Intent(getActivity(), DetailsSupportActivity.class); 2858f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata intent.putExtra(DetailsSupportActivity.EXTRA_ITEM, (PhotoItem) item); 2868f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata bundle = ActivityOptionsCompat.makeSceneTransitionAnimation( 2878f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata getActivity(), 2888f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata ((ImageCardView) itemViewHolder.view).getMainImageView(), 2898f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata DetailsSupportActivity.SHARED_ELEMENT_NAME).toBundle(); 2908f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata } 2918f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata getActivity().startActivity(intent, bundle); 292380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata } 293380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata }); 294c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 295c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 296c578ad430b51de0151ca9b3299d84f73bb71286bsusnata private ArrayObjectAdapter createListRowAdapter(int i) { 297c578ad430b51de0151ca9b3299d84f73bb71286bsusnata ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter((i & 1) == 0 ? 298c578ad430b51de0151ca9b3299d84f73bb71286bsusnata mCardPresenter : mCardPresenter2); 299c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 300c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Hello world", 301c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_1)); 302c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 303c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "This is a test", 304c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Only a test", 305c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_2)); 306c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 307c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Android TV", 308c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "by Google", 309c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_3)); 310c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 311c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Leanback", 312c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_4)); 313c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 314c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "GuidedStep (Slide left/right)", 315c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_5)); 316c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 317c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "GuidedStep (Slide bottom up)", 318c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Open GuidedStepSupportFragment", 319c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_6)); 320c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 321c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Android TV", 322c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "open RowsSupportActivity", 323c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_7)); 324c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 325c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Leanback", 326c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "open BrowseSupportActivity", 327c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_8)); 328c578ad430b51de0151ca9b3299d84f73bb71286bsusnata return listRowAdapter; 329c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 330c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 331c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 3328f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata public static class SampleFragment extends Fragment implements MainFragmentAdapterProvider { 333380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata 334380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata final PageFragmentAdapterImpl mMainFragmentAdapter = new PageFragmentAdapterImpl(this); 335c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 336acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu boolean mEntranceTransitionState = true; 337acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu 338acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu public void setEntranceTransitionState(boolean state) { 339acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu mEntranceTransitionState = state; 340acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu final View view = getView(); 341acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu if (view == null) { 342acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu return; 343acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu } 344acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu int visibility = state ? View.VISIBLE : View.INVISIBLE; 345acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu view.findViewById(R.id.tv1).setVisibility(visibility); 346acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu view.findViewById(R.id.tv2).setVisibility(visibility); 347acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu view.findViewById(R.id.tv3).setVisibility(visibility); 348acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu } 349acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu 350c578ad430b51de0151ca9b3299d84f73bb71286bsusnata @Override 351c578ad430b51de0151ca9b3299d84f73bb71286bsusnata public View onCreateView( 352380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 353380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata View view = inflater.inflate(R.layout.page_fragment, container, false); 354380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata view.findViewById(R.id.tv1).setOnClickListener(new View.OnClickListener() { 355380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata @Override 356380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata public void onClick(View view) { 357380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata Intent intent = new Intent(inflater.getContext(), GuidedStepSupportActivity.class); 358380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata startActivity(intent); 359380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata } 360380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata }); 361380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata 362380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata return view; 363380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata } 364380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata 365380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata @Override 3665635fbd2da9e73c8f68287626728f909565c7a8aDake Gu public void onStart() { 3675635fbd2da9e73c8f68287626728f909565c7a8aDake Gu super.onStart(); 3685635fbd2da9e73c8f68287626728f909565c7a8aDake Gu mMainFragmentAdapter.getFragmentHost().notifyViewCreated(mMainFragmentAdapter); 3695635fbd2da9e73c8f68287626728f909565c7a8aDake Gu } 3705635fbd2da9e73c8f68287626728f909565c7a8aDake Gu 3715635fbd2da9e73c8f68287626728f909565c7a8aDake Gu @Override 372acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu public void onViewCreated(View view, Bundle savedInstanceState) { 373acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu setEntranceTransitionState(mEntranceTransitionState); 374acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu } 375acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu 376acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu @Override 3778f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata public MainFragmentAdapter getMainFragmentAdapter() { 3788f94d180902da7469b67f7c47c93a3a0b9acdb3asusnata return mMainFragmentAdapter; 379c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 380c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 38171e7e67f320b23feac784b629db17b3bcce08722Dake Gu} 382