VerticalGridFragment.java revision 8403619efebe94666c0615c3fc85080a303acf80
1739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout/* 2739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Copyright (C) 2014 The Android Open Source Project 3739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * 4739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * in compliance with the License. You may obtain a copy of the License at 6739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * 7739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * http://www.apache.org/licenses/LICENSE-2.0 8739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * 9739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Unless required by applicable law or agreed to in writing, software distributed under the License 10739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * or implied. See the License for the specific language governing permissions and limitations under 12739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * the License. 13739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 14739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutpackage android.support.v17.leanback.app; 15739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 1670acb0c19be3831a2080e4f902324de16bfbf62eTor Norbyeimport android.support.annotation.ColorInt; 17739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.support.v17.leanback.R; 188403619efebe94666c0615c3fc85080a303acf80Dake Guimport android.support.v17.leanback.transition.TransitionHelper; 195d00775a5d3ce3c1fc06c4de0945d1b8f03aadc4Dake Guimport android.support.v17.leanback.widget.BrowseFrameLayout; 20d586ba8825b418d9589436725bfdead30f0dc075Dake Guimport android.support.v17.leanback.widget.OnChildLaidOutListener; 21947dbf076cd019e3c26217fbc7aa21e860d68044Dake Guimport android.support.v17.leanback.widget.OnItemViewClickedListener; 22947dbf076cd019e3c26217fbc7aa21e860d68044Dake Guimport android.support.v17.leanback.widget.OnItemViewSelectedListener; 23947dbf076cd019e3c26217fbc7aa21e860d68044Dake Guimport android.support.v17.leanback.widget.Presenter; 24e34cae48707e70442aca13e1b4ab55757292828dDake Guimport android.support.v17.leanback.widget.Row; 25947dbf076cd019e3c26217fbc7aa21e860d68044Dake Guimport android.support.v17.leanback.widget.RowPresenter; 26e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stoutimport android.support.v17.leanback.widget.TitleHelper; 27731066a59e10ddc7bb6c95d0b91b3e0e11e10396Craig Stoutimport android.support.v17.leanback.widget.TitleView; 28739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.support.v17.leanback.widget.VerticalGridPresenter; 29739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.support.v17.leanback.widget.ObjectAdapter; 30739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.os.Bundle; 3125aacd3f5896ec09053739cc731bdbab3a6f2b81Jerome Poichetimport android.util.Log; 32739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.view.LayoutInflater; 33739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.view.View; 34739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.view.ViewGroup; 35739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 36739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout/** 374c0f3062b5edd9750351068f46e5270bb220091dTim Kilbourn * A fragment for creating leanback vertical grids. 38739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * 394c0f3062b5edd9750351068f46e5270bb220091dTim Kilbourn * <p>Renders a vertical grid of objects given a {@link VerticalGridPresenter} and 40739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * an {@link ObjectAdapter}. 41739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 42786ba352397f44022617411936515fc9eb28d23fDake Gupublic class VerticalGridFragment extends BaseFragment { 43739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private static final String TAG = "VerticalGridFragment"; 44739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private static boolean DEBUG = false; 45739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 46739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private ObjectAdapter mAdapter; 47739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private VerticalGridPresenter mGridPresenter; 48739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private VerticalGridPresenter.ViewHolder mGridViewHolder; 49947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu private OnItemViewSelectedListener mOnItemViewSelectedListener; 50947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu private OnItemViewClickedListener mOnItemViewClickedListener; 51786ba352397f44022617411936515fc9eb28d23fDake Gu private Object mSceneAfterEntranceTransition; 52739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private int mSelectedPosition = -1; 53739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 54dfb60d0af5d49da05c584d74245c616263f26b65Craig Stout /** 55dfb60d0af5d49da05c584d74245c616263f26b65Craig Stout * Sets the grid presenter. 56739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 57739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public void setGridPresenter(VerticalGridPresenter gridPresenter) { 58739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout if (gridPresenter == null) { 59739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout throw new IllegalArgumentException("Grid presenter may not be null"); 60739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 61739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mGridPresenter = gridPresenter; 62d586ba8825b418d9589436725bfdead30f0dc075Dake Gu mGridPresenter.setOnItemViewSelectedListener(mViewSelectedListener); 63947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu if (mOnItemViewClickedListener != null) { 64947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu mGridPresenter.setOnItemViewClickedListener(mOnItemViewClickedListener); 65947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu } 66739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 67739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 68739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout /** 69739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Returns the grid presenter. 70739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 71739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public VerticalGridPresenter getGridPresenter() { 72739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout return mGridPresenter; 73739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 74739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 75739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout /** 76739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Sets the object adapter for the fragment. 77739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 78739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public void setAdapter(ObjectAdapter adapter) { 79739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mAdapter = adapter; 80739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout updateAdapter(); 81739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 82739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 83739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout /** 84739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Returns the object adapter. 85739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 86739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public ObjectAdapter getAdapter() { 87739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout return mAdapter; 88739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 89739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 90d586ba8825b418d9589436725bfdead30f0dc075Dake Gu final private OnItemViewSelectedListener mViewSelectedListener = 91947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu new OnItemViewSelectedListener() { 92e34cae48707e70442aca13e1b4ab55757292828dDake Gu @Override 93947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item, 94947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu RowPresenter.ViewHolder rowViewHolder, Row row) { 95e34cae48707e70442aca13e1b4ab55757292828dDake Gu int position = mGridViewHolder.getGridView().getSelectedPosition(); 96d586ba8825b418d9589436725bfdead30f0dc075Dake Gu if (DEBUG) Log.v(TAG, "grid selected position " + position); 97d586ba8825b418d9589436725bfdead30f0dc075Dake Gu gridOnItemSelected(position); 98947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu if (mOnItemViewSelectedListener != null) { 99947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu mOnItemViewSelectedListener.onItemSelected(itemViewHolder, item, 100947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu rowViewHolder, row); 101947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu } 102e34cae48707e70442aca13e1b4ab55757292828dDake Gu } 103e34cae48707e70442aca13e1b4ab55757292828dDake Gu }; 104e34cae48707e70442aca13e1b4ab55757292828dDake Gu 105d586ba8825b418d9589436725bfdead30f0dc075Dake Gu final private OnChildLaidOutListener mChildLaidOutListener = 106d586ba8825b418d9589436725bfdead30f0dc075Dake Gu new OnChildLaidOutListener() { 107d586ba8825b418d9589436725bfdead30f0dc075Dake Gu @Override 108d586ba8825b418d9589436725bfdead30f0dc075Dake Gu public void onChildLaidOut(ViewGroup parent, View view, int position, long id) { 109d586ba8825b418d9589436725bfdead30f0dc075Dake Gu if (position == 0) { 110d586ba8825b418d9589436725bfdead30f0dc075Dake Gu showOrHideTitle(); 111d586ba8825b418d9589436725bfdead30f0dc075Dake Gu } 112d586ba8825b418d9589436725bfdead30f0dc075Dake Gu } 113d586ba8825b418d9589436725bfdead30f0dc075Dake Gu }; 114d586ba8825b418d9589436725bfdead30f0dc075Dake Gu 115739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout /** 116739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Sets an item selection listener. 117947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu */ 118947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu public void setOnItemViewSelectedListener(OnItemViewSelectedListener listener) { 119947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu mOnItemViewSelectedListener = listener; 120947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu } 121947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu 122d586ba8825b418d9589436725bfdead30f0dc075Dake Gu private void gridOnItemSelected(int position) { 123e34cae48707e70442aca13e1b4ab55757292828dDake Gu if (position != mSelectedPosition) { 124e34cae48707e70442aca13e1b4ab55757292828dDake Gu mSelectedPosition = position; 125d586ba8825b418d9589436725bfdead30f0dc075Dake Gu showOrHideTitle(); 126d586ba8825b418d9589436725bfdead30f0dc075Dake Gu } 127d586ba8825b418d9589436725bfdead30f0dc075Dake Gu } 128d586ba8825b418d9589436725bfdead30f0dc075Dake Gu 129d586ba8825b418d9589436725bfdead30f0dc075Dake Gu private void showOrHideTitle() { 130d586ba8825b418d9589436725bfdead30f0dc075Dake Gu if (mGridViewHolder.getGridView().findViewHolderForAdapterPosition(mSelectedPosition) 131d586ba8825b418d9589436725bfdead30f0dc075Dake Gu == null) { 132d586ba8825b418d9589436725bfdead30f0dc075Dake Gu return; 133d586ba8825b418d9589436725bfdead30f0dc075Dake Gu } 134d586ba8825b418d9589436725bfdead30f0dc075Dake Gu if (!mGridViewHolder.getGridView().hasPreviousViewInSameRow(mSelectedPosition)) { 135e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout showTitle(true); 136e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout } else { 137e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout showTitle(false); 138e34cae48707e70442aca13e1b4ab55757292828dDake Gu } 139e34cae48707e70442aca13e1b4ab55757292828dDake Gu } 140739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 141739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout /** 142739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Sets an item clicked listener. 143947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu */ 144947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu public void setOnItemViewClickedListener(OnItemViewClickedListener listener) { 145947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu mOnItemViewClickedListener = listener; 146947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu if (mGridPresenter != null) { 147947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu mGridPresenter.setOnItemViewClickedListener(mOnItemViewClickedListener); 148947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu } 149947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu } 150947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu 151947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu /** 152947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu * Returns the item clicked listener. 153947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu */ 154947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu public OnItemViewClickedListener getOnItemViewClickedListener() { 155947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu return mOnItemViewClickedListener; 156947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu } 157947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu 158739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout @Override 159739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public View onCreateView(LayoutInflater inflater, ViewGroup container, 160739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout Bundle savedInstanceState) { 161e34cae48707e70442aca13e1b4ab55757292828dDake Gu ViewGroup root = (ViewGroup) inflater.inflate(R.layout.lb_vertical_grid_fragment, 162e34cae48707e70442aca13e1b4ab55757292828dDake Gu container, false); 163e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout setTitleView((TitleView) root.findViewById(R.id.browse_title_group)); 164731066a59e10ddc7bb6c95d0b91b3e0e11e10396Craig Stout return root; 1659020c0aec57b4e8994d66b7cd1a89c225e9bfa11Craig Stout } 1669020c0aec57b4e8994d66b7cd1a89c225e9bfa11Craig Stout 167739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout @Override 168739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public void onViewCreated(View view, Bundle savedInstanceState) { 169e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout super.onViewCreated(view, savedInstanceState); 170739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout ViewGroup gridDock = (ViewGroup) view.findViewById(R.id.browse_grid_dock); 171739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mGridViewHolder = mGridPresenter.onCreateViewHolder(gridDock); 172739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout gridDock.addView(mGridViewHolder.view); 173d586ba8825b418d9589436725bfdead30f0dc075Dake Gu mGridViewHolder.getGridView().setOnChildLaidOutListener(mChildLaidOutListener); 174739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 1758403619efebe94666c0615c3fc85080a303acf80Dake Gu mSceneAfterEntranceTransition = TransitionHelper.createScene(gridDock, new Runnable() { 176786ba352397f44022617411936515fc9eb28d23fDake Gu @Override 177786ba352397f44022617411936515fc9eb28d23fDake Gu public void run() { 178786ba352397f44022617411936515fc9eb28d23fDake Gu setEntranceTransitionState(true); 179786ba352397f44022617411936515fc9eb28d23fDake Gu } 180786ba352397f44022617411936515fc9eb28d23fDake Gu }); 181786ba352397f44022617411936515fc9eb28d23fDake Gu 182739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout updateAdapter(); 183739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 184739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 185e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout private void setupFocusSearchListener() { 186e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout BrowseFrameLayout browseFrameLayout = (BrowseFrameLayout) getView().findViewById( 187e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout R.id.grid_frame); 188e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout browseFrameLayout.setOnFocusSearchListener(getTitleHelper().getOnFocusSearchListener()); 189e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout } 190e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout 191739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout @Override 192739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public void onStart() { 193739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout super.onStart(); 194e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout setupFocusSearchListener(); 195786ba352397f44022617411936515fc9eb28d23fDake Gu if (isEntranceTransitionEnabled()) { 196786ba352397f44022617411936515fc9eb28d23fDake Gu setEntranceTransitionState(false); 197786ba352397f44022617411936515fc9eb28d23fDake Gu } 198739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 199739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 200739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout @Override 201739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public void onDestroyView() { 202739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout super.onDestroyView(); 203739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mGridViewHolder = null; 204739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 205739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 206739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout /** 207739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Sets the selected item position. 208739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 209739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public void setSelectedPosition(int position) { 210739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mSelectedPosition = position; 211739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout if(mGridViewHolder != null && mGridViewHolder.getGridView().getAdapter() != null) { 212739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mGridViewHolder.getGridView().setSelectedPositionSmooth(position); 213739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 214739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 215739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 216739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private void updateAdapter() { 217739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout if (mGridViewHolder != null) { 218739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mGridPresenter.onBindViewHolder(mGridViewHolder, mAdapter); 219739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout if (mSelectedPosition != -1) { 220739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mGridViewHolder.getGridView().setSelectedPosition(mSelectedPosition); 221739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 222739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 223739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 224786ba352397f44022617411936515fc9eb28d23fDake Gu 225786ba352397f44022617411936515fc9eb28d23fDake Gu @Override 226786ba352397f44022617411936515fc9eb28d23fDake Gu protected Object createEntranceTransition() { 2278403619efebe94666c0615c3fc85080a303acf80Dake Gu return TransitionHelper.loadTransition(getActivity(), 228786ba352397f44022617411936515fc9eb28d23fDake Gu R.transition.lb_vertical_grid_entrance_transition); 229786ba352397f44022617411936515fc9eb28d23fDake Gu } 230786ba352397f44022617411936515fc9eb28d23fDake Gu 231786ba352397f44022617411936515fc9eb28d23fDake Gu @Override 232786ba352397f44022617411936515fc9eb28d23fDake Gu protected void runEntranceTransition(Object entranceTransition) { 2338403619efebe94666c0615c3fc85080a303acf80Dake Gu TransitionHelper.runTransition(mSceneAfterEntranceTransition, entranceTransition); 234786ba352397f44022617411936515fc9eb28d23fDake Gu } 235786ba352397f44022617411936515fc9eb28d23fDake Gu 236786ba352397f44022617411936515fc9eb28d23fDake Gu void setEntranceTransitionState(boolean afterTransition) { 237786ba352397f44022617411936515fc9eb28d23fDake Gu mGridPresenter.setEntranceTransitionState(mGridViewHolder, afterTransition); 238786ba352397f44022617411936515fc9eb28d23fDake Gu } 239739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout} 240