1e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout/*
2e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout * Copyright (C) 2014 The Android Open Source Project
3e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout *
4e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout * in compliance with the License. You may obtain a copy of the License at
6e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout *
7e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout * http://www.apache.org/licenses/LICENSE-2.0
8e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout *
9e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout * Unless required by applicable law or agreed to in writing, software distributed under the License
10e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout * or implied. See the License for the specific language governing permissions and limitations under
12e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout * the License.
13e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout */
14e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stoutpackage android.support.v17.leanback.app;
15e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
16e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stoutimport android.app.Fragment;
17e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stoutimport android.graphics.drawable.Drawable;
18e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stoutimport android.os.Bundle;
19e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stoutimport android.support.v17.leanback.R;
20e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stoutimport android.support.v17.leanback.widget.SearchOrbView;
21e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stoutimport android.support.v17.leanback.widget.TitleHelper;
22e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stoutimport android.support.v17.leanback.widget.TitleView;
23e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stoutimport android.view.View;
24e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stoutimport android.view.ViewGroup;
25e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
26e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout/**
27e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout * Fragment support for managing branding on a
28e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout * {@link android.support.v17.leanback.widget.TitleView}.
29e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout * @hide
30e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout */
31e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stoutclass BrandedFragment extends Fragment {
32e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
33e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    // BUNDLE attribute for title is showing
34e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    private static final String TITLE_SHOW = "titleShow";
35e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
36e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    private boolean mShowingTitle = true;
37e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    private String mTitle;
38e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    private Drawable mBadgeDrawable;
39e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    private TitleView mTitleView;
40e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    private SearchOrbView.Colors mSearchAffordanceColors;
41e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    private boolean mSearchAffordanceColorSet;
42e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    private View.OnClickListener mExternalOnSearchClickedListener;
43e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    private TitleHelper mTitleHelper;
44e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
45e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    /**
46e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     * Sets the {@link TitleView}.
47e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     */
48e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    void setTitleView(TitleView titleView) {
49e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        mTitleView = titleView;
50e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        if (mTitleView == null) {
51e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            mTitleHelper = null;
52e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        } else {
53e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            mTitleView.setTitle(mTitle);
54e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            mTitleView.setBadgeDrawable(mBadgeDrawable);
55e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            if (mSearchAffordanceColorSet) {
56e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout                mTitleView.setSearchAffordanceColors(mSearchAffordanceColors);
57e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            }
58e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            if (mExternalOnSearchClickedListener != null) {
59e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout                mTitleView.setOnSearchClickedListener(mExternalOnSearchClickedListener);
60e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            }
61e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            if (getView() instanceof ViewGroup) {
62e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout                mTitleHelper = new TitleHelper((ViewGroup) getView(), mTitleView);
63e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            }
64e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        }
65e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    }
66e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
67e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    /**
68e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     * Returns the {@link TitleView}.
69e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     */
70e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    TitleView getTitleView() {
71e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        return mTitleView;
72e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    }
73e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
74e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    /**
75e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     * Returns the {@link TitleHelper}.
76e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     */
77e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    TitleHelper getTitleHelper() {
78e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        return mTitleHelper;
79e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    }
80e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
81e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    @Override
82e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    public void onSaveInstanceState(Bundle outState) {
83e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        super.onSaveInstanceState(outState);
84e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        outState.putBoolean(TITLE_SHOW, mShowingTitle);
85e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    }
86e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
87e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    @Override
88e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    public void onViewCreated(View view, Bundle savedInstanceState) {
89e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        super.onViewCreated(view, savedInstanceState);
90e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        if (savedInstanceState != null) {
91e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            mShowingTitle = savedInstanceState.getBoolean(TITLE_SHOW);
92e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        }
93e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        if (mTitleView != null && view instanceof ViewGroup) {
94e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            mTitleHelper = new TitleHelper((ViewGroup) view, mTitleView);
95e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        }
96e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    }
97e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
98e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    @Override
99e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    public void onDestroyView() {
100e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        super.onDestroyView();
101e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        mTitleHelper = null;
102e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    }
103e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
104e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    /**
105e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     * Shows or hides the {@link android.support.v17.leanback.widget.TitleView}.
106e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     */
107e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    void showTitle(boolean show) {
108e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        // TODO: handle interruptions?
109e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        if (show == mShowingTitle) {
110e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            return;
111e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        }
112e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        mShowingTitle = show;
113e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        if (mTitleHelper != null) {
114e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            mTitleHelper.showTitle(show);
115e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        }
116e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    }
117e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
118e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    /**
119e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     * Sets the drawable displayed in the browse fragment title.
120e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     *
121e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     * @param drawable The Drawable to display in the browse fragment title.
122e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     */
123e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    public void setBadgeDrawable(Drawable drawable) {
124e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        if (mBadgeDrawable != drawable) {
125e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            mBadgeDrawable = drawable;
126e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            if (mTitleView != null) {
127e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout                mTitleView.setBadgeDrawable(drawable);
128e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            }
129e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        }
130e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    }
131e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
132e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    /**
133e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     * Returns the badge drawable used in the fragment title.
134e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     */
135e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    public Drawable getBadgeDrawable() {
136e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        return mBadgeDrawable;
137e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    }
138e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
139e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    /**
140e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     * Sets a title for the browse fragment.
141e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     *
142e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     * @param title The title of the browse fragment.
143e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     */
144e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    public void setTitle(String title) {
145e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        mTitle = title;
146e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        if (mTitleView != null) {
147e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            mTitleView.setTitle(title);
148e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        }
149e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    }
150e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
151e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    /**
152e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     * Returns the title for the browse fragment.
153e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     */
154e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    public String getTitle() {
155e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        return mTitle;
156e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    }
157e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
158e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    /**
159e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     * Sets a click listener for the search affordance.
160e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     *
161e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     * <p>The presence of a listener will change the visibility of the search
162e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     * affordance in the fragment title. When set to non-null, the title will
163e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     * contain an element that a user may click to begin a search.
164e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     *
165e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     * <p>The listener's {@link View.OnClickListener#onClick onClick} method
166e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     * will be invoked when the user clicks on the search element.
167e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     *
168e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     * @param listener The listener to call when the search element is clicked.
169e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     */
170e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    public void setOnSearchClickedListener(View.OnClickListener listener) {
171e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        mExternalOnSearchClickedListener = listener;
172e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        if (mTitleView != null) {
173e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            mTitleView.setOnSearchClickedListener(listener);
174e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        }
175e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    }
176e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
177e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    /**
178e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     * Sets the {@link android.support.v17.leanback.widget.SearchOrbView.Colors} used to draw the search affordance.
179e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     */
180e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    public void setSearchAffordanceColors(SearchOrbView.Colors colors) {
181e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        mSearchAffordanceColors = colors;
182e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        mSearchAffordanceColorSet = true;
183e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        if (mTitleView != null) {
184e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            mTitleView.setSearchAffordanceColors(mSearchAffordanceColors);
185e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        }
186e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    }
187e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
188e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    /**
189f01172a8028e20a2d86c71c1024fbc973e67afa4Craig Stout     * Returns the {@link android.support.v17.leanback.widget.SearchOrbView.Colors}
190f01172a8028e20a2d86c71c1024fbc973e67afa4Craig Stout     * used to draw the search affordance.
191e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     */
192e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    public SearchOrbView.Colors getSearchAffordanceColors() {
193e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        if (mSearchAffordanceColorSet) {
194e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            return mSearchAffordanceColors;
195e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        }
196e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        if (mTitleView == null) {
197e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            throw new IllegalStateException("Fragment views not yet created");
198e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        }
199e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        return mTitleView.getSearchAffordanceColors();
200e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    }
201e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
202e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    /**
203e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     * Sets the color used to draw the search affordance.
204e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     * A default brighter color will be set by the framework.
205e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     *
206e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     * @param color The color to use for the search affordance.
207e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     */
208e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    public void setSearchAffordanceColor(int color) {
209e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        setSearchAffordanceColors(new SearchOrbView.Colors(color));
210e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    }
211e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
212e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    /**
213e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     * Returns the color used to draw the search affordance.
214e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout     */
215e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    public int getSearchAffordanceColor() {
216e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        return getSearchAffordanceColors().color;
217e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    }
218e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
219e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    @Override
220e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    public void onStart() {
221e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        super.onStart();
222e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        if (mTitleView != null) {
223e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            mTitleView.setVisibility(mShowingTitle ? View.VISIBLE : View.INVISIBLE);
224e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        }
225e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    }
226e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
227e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    @Override
228e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    public void onPause() {
229e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        if (mTitleView != null) {
230e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            mTitleView.enableAnimation(false);
231e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        }
232e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        super.onPause();
233e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    }
234e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
235e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    @Override
236e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    public void onResume() {
237e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        super.onResume();
238e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        if (mTitleView != null) {
239e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            mTitleView.enableAnimation(true);
240e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        }
241e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    }
242e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout}
243