• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2016 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5  * in compliance with the License. You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software distributed under the License
10  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11  * or implied. See the License for the specific language governing permissions and limitations under
12  * the License.
13  */
14 package android.support.v17.leanback.widget;
15 
16 import android.content.Context;
17 import android.graphics.drawable.Drawable;
18 import android.support.v17.leanback.R;
19 import android.util.AttributeSet;
20 import android.view.LayoutInflater;
21 import android.view.View;
22 
23 /**
24  * This class allows a customized widget class to implement {@link TitleViewAdapter.Provider}
25  * and expose {@link TitleViewAdapter} methods to containing fragment (e.g. BrowseFragment or
26  * DetailsFragment).
27  * The title view must have a search orb view ({@link #getSearchAffordanceView()} aligned to start
28  * and can typically have a branding Drawable and or title text aligned to end.  The branding part
29  * is fully open to customization: not necessary to be a drawable or text.
30  */
31 public abstract class TitleViewAdapter {
32 
33     /**
34      * Interface to be implemented by a customized widget class to implement
35      * {@link TitleViewAdapter}.
36      */
37     public interface Provider {
38         /**
39          * Returns {@link TitleViewAdapter} to be implemented by the customized widget class.
40          * @return {@link TitleViewAdapter} to be implemented by the customized widget class.
41          */
getTitleViewAdapter()42         TitleViewAdapter getTitleViewAdapter();
43     }
44 
45     public static final int BRANDING_VIEW_VISIBLE = 0x02;
46     public static final int SEARCH_VIEW_VISIBLE = 0x04;
47     public static final int FULL_VIEW_VISIBLE = BRANDING_VIEW_VISIBLE | SEARCH_VIEW_VISIBLE;
48 
49     /**
50      * Sets the title text.
51      * @param titleText The text to set as title.
52      */
setTitle(CharSequence titleText)53     public void setTitle(CharSequence titleText) {
54     }
55 
56     /**
57      * Returns the title text.
58      * @return The title text.
59      */
getTitle()60     public CharSequence getTitle() {
61         return null;
62     }
63 
64     /**
65      * Sets the badge drawable.
66      * If non-null, the drawable is displayed instead of the title text.
67      * @param drawable The badge drawable to set on title view.
68      */
setBadgeDrawable(Drawable drawable)69     public void setBadgeDrawable(Drawable drawable) {
70     }
71 
72     /**
73      * Returns the badge drawable.
74      * @return The badge drawable.
75      */
getBadgeDrawable()76     public Drawable getBadgeDrawable() {
77         return null;
78     }
79 
80     /**
81      *  Returns the view for the search affordance.
82      *  @return The view for search affordance.
83      */
getSearchAffordanceView()84     public abstract View getSearchAffordanceView();
85 
86     /**
87      * Sets a click listener for the search affordance view.
88      *
89      * <p>The presence of a listener will change the visibility of the search
90      * affordance in the fragment title. When set to non-null, the title will
91      * contain an element that a user may click to begin a search.
92      *
93      * <p>The listener's {@link View.OnClickListener#onClick onClick} method
94      * will be invoked when the user clicks on the search element.
95      *
96      * @param listener The listener to call when the search element is clicked.
97      */
setOnSearchClickedListener(View.OnClickListener listener)98     public void setOnSearchClickedListener(View.OnClickListener listener) {
99     }
100 
101     /**
102      * Sets the {@link android.support.v17.leanback.widget.SearchOrbView.Colors} used to draw the
103      * search affordance.
104      *
105      * @param colors Colors used to draw search affordance.
106      */
setSearchAffordanceColors(SearchOrbView.Colors colors)107     public void setSearchAffordanceColors(SearchOrbView.Colors colors) {
108     }
109 
110     /**
111      * Returns the {@link android.support.v17.leanback.widget.SearchOrbView.Colors} used to draw the
112      * search affordance.
113      *
114      * @return Colors used to draw search affordance.
115      */
getSearchAffordanceColors()116     public SearchOrbView.Colors getSearchAffordanceColors() {
117         return null;
118     }
119 
120     /**
121      * Enables or disables any view animations.  This method is called to save CPU cycle for example
122      * stop search view breathing animation when containing fragment is paused.
123      * @param enable True to enable animation, false otherwise.
124      */
setAnimationEnabled(boolean enable)125     public void setAnimationEnabled(boolean enable) {
126     }
127 
128     /**
129      * Based on the flag, it updates the visibility of the individual components -
130      * Branding views (badge drawable and/or title) and search affordance view.
131      *
132      * @param flags integer representing the visibility of TitleView components.
133      * @see #BRANDING_VIEW_VISIBLE
134      * @see #SEARCH_VIEW_VISIBLE
135      * @see #FULL_VIEW_VISIBLE
136      */
updateComponentsVisibility(int flags)137     public void updateComponentsVisibility(int flags) {
138     }
139 }
140