BrowseSupportFragment.java revision 87b904ffa106f12f2fecfe8b9a46084863678f29
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 1871e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.content.Intent; 1971e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.os.Bundle; 2071e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.os.Handler; 2171e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v4.app.ActivityOptionsCompat; 2271e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.app.GuidedStepSupportFragment; 2371e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.ArrayObjectAdapter; 2471e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.HeaderItem; 2571e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.ImageCardView; 2671e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.ListRow; 2771e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.ListRowPresenter; 2871e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.OnItemViewClickedListener; 2971e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.OnItemViewSelectedListener; 3071e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.Presenter; 3171e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.Row; 3271e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.support.v17.leanback.widget.RowPresenter; 3371e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.util.Log; 3471e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.view.View; 3571e7e67f320b23feac784b629db17b3bcce08722Dake Guimport android.view.ViewGroup; 3671e7e67f320b23feac784b629db17b3bcce08722Dake Gu 3771e7e67f320b23feac784b629db17b3bcce08722Dake Gupublic class BrowseSupportFragment extends android.support.v17.leanback.app.BrowseSupportFragment { 3871e7e67f320b23feac784b629db17b3bcce08722Dake Gu private static final String TAG = "leanback.BrowseSupportFragment"; 3971e7e67f320b23feac784b629db17b3bcce08722Dake Gu 4071e7e67f320b23feac784b629db17b3bcce08722Dake Gu private static final boolean TEST_ENTRANCE_TRANSITION = true; 4171e7e67f320b23feac784b629db17b3bcce08722Dake Gu private static final int NUM_ROWS = 10; 4271e7e67f320b23feac784b629db17b3bcce08722Dake Gu 4371e7e67f320b23feac784b629db17b3bcce08722Dake Gu private ArrayObjectAdapter mRowsAdapter; 4471e7e67f320b23feac784b629db17b3bcce08722Dake Gu private BackgroundHelper mBackgroundHelper = new BackgroundHelper(); 4571e7e67f320b23feac784b629db17b3bcce08722Dake Gu 4671e7e67f320b23feac784b629db17b3bcce08722Dake Gu // For good performance, it's important to use a single instance of 4771e7e67f320b23feac784b629db17b3bcce08722Dake Gu // a card presenter for all rows using that presenter. 4887b904ffa106f12f2fecfe8b9a46084863678f29Dake Gu final CardPresenter mCardPresenter = new CardPresenter(); 4987b904ffa106f12f2fecfe8b9a46084863678f29Dake Gu final CardPresenter mCardPresenter2 = new CardPresenter(R.style.MyImageCardViewTheme); 5071e7e67f320b23feac784b629db17b3bcce08722Dake Gu 5171e7e67f320b23feac784b629db17b3bcce08722Dake Gu @Override 5271e7e67f320b23feac784b629db17b3bcce08722Dake Gu public void onCreate(Bundle savedInstanceState) { 5371e7e67f320b23feac784b629db17b3bcce08722Dake Gu Log.i(TAG, "onCreate"); 5471e7e67f320b23feac784b629db17b3bcce08722Dake Gu super.onCreate(savedInstanceState); 5571e7e67f320b23feac784b629db17b3bcce08722Dake Gu 5671e7e67f320b23feac784b629db17b3bcce08722Dake Gu setBadgeDrawable(getActivity().getResources().getDrawable(R.drawable.ic_title)); 5771e7e67f320b23feac784b629db17b3bcce08722Dake Gu setTitle("Leanback Sample App"); 5871e7e67f320b23feac784b629db17b3bcce08722Dake Gu setHeadersState(HEADERS_ENABLED); 5971e7e67f320b23feac784b629db17b3bcce08722Dake Gu 6071e7e67f320b23feac784b629db17b3bcce08722Dake Gu setOnSearchClickedListener(new View.OnClickListener() { 6171e7e67f320b23feac784b629db17b3bcce08722Dake Gu @Override 6271e7e67f320b23feac784b629db17b3bcce08722Dake Gu public void onClick(View view) { 6371e7e67f320b23feac784b629db17b3bcce08722Dake Gu Intent intent = new Intent(getActivity(), SearchSupportActivity.class); 6471e7e67f320b23feac784b629db17b3bcce08722Dake Gu startActivity(intent); 6571e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 6671e7e67f320b23feac784b629db17b3bcce08722Dake Gu }); 6771e7e67f320b23feac784b629db17b3bcce08722Dake Gu 6871e7e67f320b23feac784b629db17b3bcce08722Dake Gu setupRows(); 6971e7e67f320b23feac784b629db17b3bcce08722Dake Gu setOnItemViewClickedListener(new ItemViewClickedListener()); 7071e7e67f320b23feac784b629db17b3bcce08722Dake Gu setOnItemViewSelectedListener(new OnItemViewSelectedListener() { 7171e7e67f320b23feac784b629db17b3bcce08722Dake Gu @Override 7271e7e67f320b23feac784b629db17b3bcce08722Dake Gu public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item, 7371e7e67f320b23feac784b629db17b3bcce08722Dake Gu RowPresenter.ViewHolder rowViewHolder, Row row) { 7471e7e67f320b23feac784b629db17b3bcce08722Dake Gu Log.i(TAG, "onItemSelected: " + item + " row " + row); 7571e7e67f320b23feac784b629db17b3bcce08722Dake Gu 7671e7e67f320b23feac784b629db17b3bcce08722Dake Gu if (isShowingHeaders()) { 7771e7e67f320b23feac784b629db17b3bcce08722Dake Gu mBackgroundHelper.setBackground(getActivity(), null); 7871e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 7971e7e67f320b23feac784b629db17b3bcce08722Dake Gu else if (item instanceof PhotoItem) { 8071e7e67f320b23feac784b629db17b3bcce08722Dake Gu mBackgroundHelper.setBackground( 8171e7e67f320b23feac784b629db17b3bcce08722Dake Gu getActivity(), ((PhotoItem) item).getImageResourceId()); 8271e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 8371e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 8471e7e67f320b23feac784b629db17b3bcce08722Dake Gu }); 8571e7e67f320b23feac784b629db17b3bcce08722Dake Gu if (TEST_ENTRANCE_TRANSITION) { 8671e7e67f320b23feac784b629db17b3bcce08722Dake Gu // don't run entrance transition if fragment is restored. 8771e7e67f320b23feac784b629db17b3bcce08722Dake Gu if (savedInstanceState == null) { 8871e7e67f320b23feac784b629db17b3bcce08722Dake Gu prepareEntranceTransition(); 8971e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 9071e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 9171e7e67f320b23feac784b629db17b3bcce08722Dake Gu // simulates in a real world use case data being loaded two seconds later 9271e7e67f320b23feac784b629db17b3bcce08722Dake Gu new Handler().postDelayed(new Runnable() { 9371e7e67f320b23feac784b629db17b3bcce08722Dake Gu public void run() { 9471e7e67f320b23feac784b629db17b3bcce08722Dake Gu loadData(); 9571e7e67f320b23feac784b629db17b3bcce08722Dake Gu startEntranceTransition(); 9671e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 9771e7e67f320b23feac784b629db17b3bcce08722Dake Gu }, 2000); 9871e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 9971e7e67f320b23feac784b629db17b3bcce08722Dake Gu 10071e7e67f320b23feac784b629db17b3bcce08722Dake Gu private void setupRows() { 10171e7e67f320b23feac784b629db17b3bcce08722Dake Gu ListRowPresenter lrp = new ListRowPresenter(); 10271e7e67f320b23feac784b629db17b3bcce08722Dake Gu 10371e7e67f320b23feac784b629db17b3bcce08722Dake Gu mRowsAdapter = new ArrayObjectAdapter(lrp); 10471e7e67f320b23feac784b629db17b3bcce08722Dake Gu 10571e7e67f320b23feac784b629db17b3bcce08722Dake Gu setAdapter(mRowsAdapter); 10671e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 10771e7e67f320b23feac784b629db17b3bcce08722Dake Gu 10871e7e67f320b23feac784b629db17b3bcce08722Dake Gu private void loadData() { 10971e7e67f320b23feac784b629db17b3bcce08722Dake Gu for (int i = 0; i < NUM_ROWS; ++i) { 11087b904ffa106f12f2fecfe8b9a46084863678f29Dake Gu ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter((i & 1) == 0 ? 11187b904ffa106f12f2fecfe8b9a46084863678f29Dake Gu mCardPresenter : mCardPresenter2); 11271e7e67f320b23feac784b629db17b3bcce08722Dake Gu listRowAdapter.add(new PhotoItem("Hello world", R.drawable.gallery_photo_1)); 11371e7e67f320b23feac784b629db17b3bcce08722Dake Gu listRowAdapter.add(new PhotoItem("This is a test", "Only a test", R.drawable.gallery_photo_2)); 11471e7e67f320b23feac784b629db17b3bcce08722Dake Gu listRowAdapter.add(new PhotoItem("Android TV", "by Google", R.drawable.gallery_photo_3)); 11571e7e67f320b23feac784b629db17b3bcce08722Dake Gu listRowAdapter.add(new PhotoItem("Leanback", R.drawable.gallery_photo_4)); 11671e7e67f320b23feac784b629db17b3bcce08722Dake Gu listRowAdapter.add(new PhotoItem("Hello world", R.drawable.gallery_photo_5)); 11771e7e67f320b23feac784b629db17b3bcce08722Dake Gu listRowAdapter.add(new PhotoItem("This is a test", "Open GuidedStepSupportFragment", R.drawable.gallery_photo_6)); 11871e7e67f320b23feac784b629db17b3bcce08722Dake Gu listRowAdapter.add(new PhotoItem("Android TV", "open RowsSupportActivity", R.drawable.gallery_photo_7)); 11971e7e67f320b23feac784b629db17b3bcce08722Dake Gu listRowAdapter.add(new PhotoItem("Leanback", "open BrowseSupportActivity", R.drawable.gallery_photo_8)); 12071e7e67f320b23feac784b629db17b3bcce08722Dake Gu HeaderItem header = new HeaderItem(i, "Row " + i); 12171e7e67f320b23feac784b629db17b3bcce08722Dake Gu mRowsAdapter.add(new ListRow(header, listRowAdapter)); 12271e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 12371e7e67f320b23feac784b629db17b3bcce08722Dake Gu 12471e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 12571e7e67f320b23feac784b629db17b3bcce08722Dake Gu 12671e7e67f320b23feac784b629db17b3bcce08722Dake Gu private final class ItemViewClickedListener implements OnItemViewClickedListener { 12771e7e67f320b23feac784b629db17b3bcce08722Dake Gu @Override 12871e7e67f320b23feac784b629db17b3bcce08722Dake Gu public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item, 12971e7e67f320b23feac784b629db17b3bcce08722Dake Gu RowPresenter.ViewHolder rowViewHolder, Row row) { 13071e7e67f320b23feac784b629db17b3bcce08722Dake Gu 13171e7e67f320b23feac784b629db17b3bcce08722Dake Gu Intent intent; 13271e7e67f320b23feac784b629db17b3bcce08722Dake Gu Bundle bundle; 13371e7e67f320b23feac784b629db17b3bcce08722Dake Gu if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_6) { 13471e7e67f320b23feac784b629db17b3bcce08722Dake Gu GuidedStepSupportFragment.add(getFragmentManager(), 13571e7e67f320b23feac784b629db17b3bcce08722Dake Gu new GuidedStepSupportActivity.FirstStepFragment(), 136ee3c13ee552002263be40f6a5986f61c605b0bacDake Gu R.id.lb_guidedstep_host); 13771e7e67f320b23feac784b629db17b3bcce08722Dake Gu return; 13871e7e67f320b23feac784b629db17b3bcce08722Dake Gu } else if ( ((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_8) { 13971e7e67f320b23feac784b629db17b3bcce08722Dake Gu intent = new Intent(getActivity(), BrowseSupportActivity.class); 14071e7e67f320b23feac784b629db17b3bcce08722Dake Gu bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity()) 14171e7e67f320b23feac784b629db17b3bcce08722Dake Gu .toBundle(); 14271e7e67f320b23feac784b629db17b3bcce08722Dake Gu } else if ( ((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_7) { 14371e7e67f320b23feac784b629db17b3bcce08722Dake Gu intent = new Intent(getActivity(), RowsSupportActivity.class); 14471e7e67f320b23feac784b629db17b3bcce08722Dake Gu bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity()) 14571e7e67f320b23feac784b629db17b3bcce08722Dake Gu .toBundle(); 14671e7e67f320b23feac784b629db17b3bcce08722Dake Gu } else { 14771e7e67f320b23feac784b629db17b3bcce08722Dake Gu intent = new Intent(getActivity(), DetailsSupportActivity.class); 14871e7e67f320b23feac784b629db17b3bcce08722Dake Gu intent.putExtra(DetailsSupportActivity.EXTRA_ITEM, (PhotoItem) item); 14971e7e67f320b23feac784b629db17b3bcce08722Dake Gu bundle = ActivityOptionsCompat.makeSceneTransitionAnimation( 15071e7e67f320b23feac784b629db17b3bcce08722Dake Gu getActivity(), 15171e7e67f320b23feac784b629db17b3bcce08722Dake Gu ((ImageCardView)itemViewHolder.view).getMainImageView(), 15271e7e67f320b23feac784b629db17b3bcce08722Dake Gu DetailsSupportActivity.SHARED_ELEMENT_NAME).toBundle(); 15371e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 15471e7e67f320b23feac784b629db17b3bcce08722Dake Gu getActivity().startActivity(intent, bundle); 15571e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 15671e7e67f320b23feac784b629db17b3bcce08722Dake Gu } 15771e7e67f320b23feac784b629db17b3bcce08722Dake Gu} 158