BrowseSupportFragment.java revision acccd0ab69d4c55e763b452c007aed7d14cf6654
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; 22380a6d5bcb74ec69524f248d0b2edee49805b31bsusnataimport android.support.v17.leanback.app.Adaptable; 2371e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.app.GuidedStepSupportFragment; 24c578ad430b51de0151ca9b3299d84f73bb71286bsusnataimport android.support.v17.leanback.app.RowsSupportFragment; 2571e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.ArrayObjectAdapter; 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; 33c578ad430b51de0151ca9b3299d84f73bb71286bsusnataimport android.support.v17.leanback.widget.PageRowPresenter; 3471e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.Presenter; 35c578ad430b51de0151ca9b3299d84f73bb71286bsusnataimport android.support.v17.leanback.widget.PresenterSelector; 3671e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.Row; 3771e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.RowPresenter; 3820767a171ab46addb5d50248d4267db14c0c8883susnataimport android.support.v4.app.ActivityOptionsCompat; 3971e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.util.Log; 40c578ad430b51de0151ca9b3299d84f73bb71286bsusnataimport android.view.LayoutInflater; 4171e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.view.View; 4271e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.view.ViewGroup; 4371e7e67f320b23feac784b629db17b3bcce08722Dake Gu 4471e7e67f320b23feac784b629db17b3bcce08722Dake Gupublic class BrowseSupportFragment extends android.support.v17.leanback.app.BrowseSupportFragment { 4571e7e67f320b23feac784b629db17b3bcce08722Dake Gu private static final String TAG = "leanback.BrowseSupportFragment"; 4671e7e67f320b23feac784b629db17b3bcce08722Dake Gu 4771e7e67f320b23feac784b629db17b3bcce08722Dake Gu private static final boolean TEST_ENTRANCE_TRANSITION = true; 48380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata private static final int NUM_ROWS = 8; 49380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata private static final long HEADER_ID1 = 1001; 50380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata private static final long HEADER_ID2 = 1002; 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() { 119c578ad430b51de0151ca9b3299d84f73bb71286bsusnata mRowsAdapter = new ArrayObjectAdapter(new MyPresenterSelector()); 12071e7e67f320b23feac784b629db17b3bcce08722Dake Gu setAdapter(mRowsAdapter); 12171e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 12271e7e67f320b23feac784b629db17b3bcce08722Dake Gu 12371e7e67f320b23feac784b629db17b3bcce08722Dake Gu private void loadData() { 124c578ad430b51de0151ca9b3299d84f73bb71286bsusnata int i = 0; 125380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata 126380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata HeaderItem header = new HeaderItem(HEADER_ID1, "Page Row " + 0); 127380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata mRowsAdapter.add(new PageRow(header)); 128380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata 129c578ad430b51de0151ca9b3299d84f73bb71286bsusnata for (; i < NUM_ROWS; ++i) { 130380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata header = new HeaderItem(i, "Row " + i); 131c578ad430b51de0151ca9b3299d84f73bb71286bsusnata mRowsAdapter.add(new ListRow(header, createListRowAdapter(i))); 13271e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 13371e7e67f320b23feac784b629db17b3bcce08722Dake Gu 134380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata header = new HeaderItem(HEADER_ID2, "Page Row " + 1); 135c578ad430b51de0151ca9b3299d84f73bb71286bsusnata mRowsAdapter.add(new PageRow(header)); 136c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 137c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 138c578ad430b51de0151ca9b3299d84f73bb71286bsusnata private ArrayObjectAdapter createListRowAdapter(int i) { 139c578ad430b51de0151ca9b3299d84f73bb71286bsusnata ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter((i & 1) == 0 ? 140c578ad430b51de0151ca9b3299d84f73bb71286bsusnata mCardPresenter : mCardPresenter2); 141c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 142c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Hello world", 143c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_1)); 144c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 145c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "This is a test", 146c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Only a test", 147c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_2)); 148c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 149c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Android TV", 150c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "by Google", 151c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_3)); 152c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 153c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Leanback", 154c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_4)); 155c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 156c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "GuidedStep (Slide left/right)", 157c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_5)); 158c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 159c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "GuidedStep (Slide bottom up)", 160c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Open GuidedStepSupportFragment", 161c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_6)); 162c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 163c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Android TV", 164c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "open RowsSupportActivity", 165c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_7)); 166c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 167c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Leanback", 168c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "open BrowseSupportActivity", 169c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_8)); 170c578ad430b51de0151ca9b3299d84f73bb71286bsusnata return listRowAdapter; 17171e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 17271e7e67f320b23feac784b629db17b3bcce08722Dake Gu 17371e7e67f320b23feac784b629db17b3bcce08722Dake Gu private final class ItemViewClickedListener implements OnItemViewClickedListener { 17471e7e67f320b23feac784b629db17b3bcce08722Dake Gu @Override 17571e7e67f320b23feac784b629db17b3bcce08722Dake Gu public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item, 17671e7e67f320b23feac784b629db17b3bcce08722Dake Gu RowPresenter.ViewHolder rowViewHolder, Row row) { 17771e7e67f320b23feac784b629db17b3bcce08722Dake Gu 17871e7e67f320b23feac784b629db17b3bcce08722Dake Gu Intent intent; 17971e7e67f320b23feac784b629db17b3bcce08722Dake Gu Bundle bundle; 18071e7e67f320b23feac784b629db17b3bcce08722Dake Gu if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_6) { 18171e7e67f320b23feac784b629db17b3bcce08722Dake Gu GuidedStepSupportFragment.add(getFragmentManager(), 18220767a171ab46addb5d50248d4267db14c0c8883susnata new GuidedStepSupportHalfScreenActivity.FirstStepFragment(), 183ee3c13ee552002263be40f6a5986f61c605b0bacDake Gu R.id.lb_guidedstep_host); 18471e7e67f320b23feac784b629db17b3bcce08722Dake Gu return; 18520767a171ab46addb5d50248d4267db14c0c8883susnata } else if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_5) { 18620767a171ab46addb5d50248d4267db14c0c8883susnata GuidedStepSupportFragment.add(getFragmentManager(), 187c578ad430b51de0151ca9b3299d84f73bb71286bsusnata new GuidedStepSupportActivity.FirstStepFragment(), R.id.lb_guidedstep_host); 188c578ad430b51de0151ca9b3299d84f73bb71286bsusnata return; 189c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } else if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_8) { 19071e7e67f320b23feac784b629db17b3bcce08722Dake Gu intent = new Intent(getActivity(), BrowseSupportActivity.class); 19171e7e67f320b23feac784b629db17b3bcce08722Dake Gu bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity()) 19271e7e67f320b23feac784b629db17b3bcce08722Dake Gu .toBundle(); 193c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } else if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_7) { 19471e7e67f320b23feac784b629db17b3bcce08722Dake Gu intent = new Intent(getActivity(), RowsSupportActivity.class); 19571e7e67f320b23feac784b629db17b3bcce08722Dake Gu bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity()) 19671e7e67f320b23feac784b629db17b3bcce08722Dake Gu .toBundle(); 19771e7e67f320b23feac784b629db17b3bcce08722Dake Gu } else { 19871e7e67f320b23feac784b629db17b3bcce08722Dake Gu intent = new Intent(getActivity(), DetailsSupportActivity.class); 19971e7e67f320b23feac784b629db17b3bcce08722Dake Gu intent.putExtra(DetailsSupportActivity.EXTRA_ITEM, (PhotoItem) item); 20071e7e67f320b23feac784b629db17b3bcce08722Dake Gu bundle = ActivityOptionsCompat.makeSceneTransitionAnimation( 20171e7e67f320b23feac784b629db17b3bcce08722Dake Gu getActivity(), 202c578ad430b51de0151ca9b3299d84f73bb71286bsusnata ((ImageCardView) itemViewHolder.view).getMainImageView(), 20371e7e67f320b23feac784b629db17b3bcce08722Dake Gu DetailsSupportActivity.SHARED_ELEMENT_NAME).toBundle(); 20471e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 20571e7e67f320b23feac784b629db17b3bcce08722Dake Gu getActivity().startActivity(intent, bundle); 20671e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 20771e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 208c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 209380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata public static class PageRowFragmentFactory extends FragmentFactory { 210c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 211c578ad430b51de0151ca9b3299d84f73bb71286bsusnata @Override 212380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata public Fragment createFragment(Object rowObj) { 213380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata Row row = (Row) rowObj; 214380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata if (row.getHeaderItem().getId() == HEADER_ID1) { 215380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata return new SampleFragment(); 216380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata } else if (row.getHeaderItem().getId() == HEADER_ID2) { 217380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata return new SampleRowsSupportFragment(); 218c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 219380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata 220380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata return null; 221c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 222c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 223c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 224380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata public static class PageFragmentAdapterImpl extends MainFragmentAdapter<SampleFragment> { 225c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 226380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata public PageFragmentAdapterImpl(SampleFragment fragment) { 227380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata super(fragment); 228c578ad430b51de0151ca9b3299d84f73bb71286bsusnata setScalingEnabled(true); 229c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 230acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu 231acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu @Override 232acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu public void setEntranceTransitionState(boolean state) { 233acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu getFragment().setEntranceTransitionState(state); 234acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu } 235c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 236c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 237380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata public static class SampleRowsSupportFragment extends RowsSupportFragment { 238c578ad430b51de0151ca9b3299d84f73bb71286bsusnata final CardPresenter mCardPresenter = new CardPresenter(); 239c578ad430b51de0151ca9b3299d84f73bb71286bsusnata final CardPresenter mCardPresenter2 = new CardPresenter(R.style.MyImageCardViewTheme); 240c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 241380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata public SampleRowsSupportFragment() { 242380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata ArrayObjectAdapter adapter = new ArrayObjectAdapter(new ListRowPresenter()); 243380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata for (int i = 0; i < 4; i++) { 244380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata ListRow row = new ListRow(new HeaderItem("Row " + i), createListRowAdapter(i)); 245380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata adapter.add(row); 246c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 247380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata setAdapter(adapter); 248380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata 249380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata setOnItemViewClickedListener(new OnItemViewClickedListener() { 250380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata @Override 251380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata public void onItemClicked( 252380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata Presenter.ViewHolder itemViewHolder, 253380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata Object item, 254380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata RowPresenter.ViewHolder rowViewHolder, Row row) { 255380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata Intent intent = new Intent( 256380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata itemViewHolder.view.getContext(), GuidedStepSupportActivity.class); 257380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata startActivity(intent); 258380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata } 259380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata }); 260c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 261c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 262c578ad430b51de0151ca9b3299d84f73bb71286bsusnata private ArrayObjectAdapter createListRowAdapter(int i) { 263c578ad430b51de0151ca9b3299d84f73bb71286bsusnata ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter((i & 1) == 0 ? 264c578ad430b51de0151ca9b3299d84f73bb71286bsusnata mCardPresenter : mCardPresenter2); 265c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 266c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Hello world", 267c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_1)); 268c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 269c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "This is a test", 270c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Only a test", 271c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_2)); 272c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 273c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Android TV", 274c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "by Google", 275c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_3)); 276c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 277c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Leanback", 278c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_4)); 279c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 280c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "GuidedStep (Slide left/right)", 281c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_5)); 282c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 283c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "GuidedStep (Slide bottom up)", 284c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Open GuidedStepSupportFragment", 285c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_6)); 286c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 287c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Android TV", 288c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "open RowsSupportActivity", 289c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_7)); 290c578ad430b51de0151ca9b3299d84f73bb71286bsusnata listRowAdapter.add(new PhotoItem( 291c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "Leanback", 292c578ad430b51de0151ca9b3299d84f73bb71286bsusnata "open BrowseSupportActivity", 293c578ad430b51de0151ca9b3299d84f73bb71286bsusnata R.drawable.gallery_photo_8)); 294c578ad430b51de0151ca9b3299d84f73bb71286bsusnata return listRowAdapter; 295c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 296c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 297c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 298380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata public static class SampleFragment extends Fragment implements Adaptable { 299380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata 300380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata final PageFragmentAdapterImpl mMainFragmentAdapter = new PageFragmentAdapterImpl(this); 301c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 302acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu boolean mEntranceTransitionState = true; 303acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu 304acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu public void setEntranceTransitionState(boolean state) { 305acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu mEntranceTransitionState = state; 306acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu final View view = getView(); 307acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu if (view == null) { 308acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu return; 309acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu } 310acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu int visibility = state ? View.VISIBLE : View.INVISIBLE; 311acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu view.findViewById(R.id.tv1).setVisibility(visibility); 312acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu view.findViewById(R.id.tv2).setVisibility(visibility); 313acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu view.findViewById(R.id.tv3).setVisibility(visibility); 314acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu } 315acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu 316c578ad430b51de0151ca9b3299d84f73bb71286bsusnata @Override 317c578ad430b51de0151ca9b3299d84f73bb71286bsusnata public View onCreateView( 318380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 319380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata View view = inflater.inflate(R.layout.page_fragment, container, false); 320380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata view.findViewById(R.id.tv1).setOnClickListener(new View.OnClickListener() { 321380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata @Override 322380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata public void onClick(View view) { 323380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata Intent intent = new Intent(inflater.getContext(), GuidedStepSupportActivity.class); 324380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata startActivity(intent); 325380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata } 326380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata }); 327380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata 328380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata return view; 329380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata } 330380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata 331380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata @Override 332acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu public void onViewCreated(View view, Bundle savedInstanceState) { 333acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu setEntranceTransitionState(mEntranceTransitionState); 334acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu } 335acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu 336acccd0ab69d4c55e763b452c007aed7d14cf6654Dake Gu @Override 337380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata public PageFragmentAdapterImpl getAdapter(Class clazz) { 338380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata if (clazz == MainFragmentAdapter.class) { 339380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata return mMainFragmentAdapter; 340380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata } 341380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata return null; 342c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 343c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 344c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 345c578ad430b51de0151ca9b3299d84f73bb71286bsusnata private static class MyPresenterSelector extends PresenterSelector { 346c578ad430b51de0151ca9b3299d84f73bb71286bsusnata private Presenter[] presenters = { 347c578ad430b51de0151ca9b3299d84f73bb71286bsusnata new ListRowPresenter(), 348c578ad430b51de0151ca9b3299d84f73bb71286bsusnata new PageRowPresenter() 349c578ad430b51de0151ca9b3299d84f73bb71286bsusnata }; 350c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 351c578ad430b51de0151ca9b3299d84f73bb71286bsusnata @Override 352c578ad430b51de0151ca9b3299d84f73bb71286bsusnata public Presenter getPresenter(Object item) { 353c578ad430b51de0151ca9b3299d84f73bb71286bsusnata if (item instanceof PageRow) { 354c578ad430b51de0151ca9b3299d84f73bb71286bsusnata return presenters[1]; 355c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 356c578ad430b51de0151ca9b3299d84f73bb71286bsusnata return presenters[0]; 357c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 358c578ad430b51de0151ca9b3299d84f73bb71286bsusnata 359c578ad430b51de0151ca9b3299d84f73bb71286bsusnata @Override 360c578ad430b51de0151ca9b3299d84f73bb71286bsusnata public Presenter[] getPresenters() { 361c578ad430b51de0151ca9b3299d84f73bb71286bsusnata return presenters; 362c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 363c578ad430b51de0151ca9b3299d84f73bb71286bsusnata } 36471e7e67f320b23feac784b629db17b3bcce08722Dake Gu} 365380a6d5bcb74ec69524f248d0b2edee49805b31bsusnata 366