public class BrowseFragment
extends BrandedFragment
java.lang.Object | |||
↳ | android.app.Fragment | ||
↳ | android.support.v17.leanback.app.BrandedFragment | ||
↳ | android.support.v17.leanback.app.BrowseFragment |
用于创建Leanback浏览屏幕的片段。 它由一个RowsFragment和一个HeadersFragment组成。
BrowseFragment将其ObjectAdapter
的元素呈现为垂直列表中的一组行。 此适配器中的元素必须是Row
子类。
HeadersFragment可以设置为默认显示或隐藏,也可以完全禁用。 详情请参阅setHeadersState(int)
。
默认情况下,BrowseFragment支持在用户按Back时返回标题。 对于定制onBackPressed()
活动,您必须通过调用setHeadersTransitionOnBackEnabled(boolean)
并使用false来禁用此默认的Back键支持,并使用BrowseFragment.BrowseTransitionListener
和startHeadersTransition(boolean)
。
建议使用BrowseFragment的主题是 Theme_Leanback_Browse
。
Nested classes |
|
---|---|
class |
BrowseFragment.BrowseTransitionListener 浏览器标题和行之间的转换。 |
class |
BrowseFragment.FragmentFactory<T extends Fragment> 工厂类负责在给定当前项目的情况下创建片段。 |
interface |
BrowseFragment.FragmentHost |
class |
BrowseFragment.ListRowFragmentFactory FragmentFactory实现 |
class |
BrowseFragment.MainFragmentAdapter<T extends Fragment> 定义 |
interface |
BrowseFragment.MainFragmentAdapterProvider 接口由所有片段实现以提供 |
class |
BrowseFragment.MainFragmentAdapterRegistry 注册表类维护 |
class |
BrowseFragment.MainFragmentRowsAdapter<T extends Fragment> 这用于将信息传递给 |
interface |
BrowseFragment.MainFragmentRowsAdapterProvider 接口由 |
Inherited XML attributes |
|
---|---|
From class android.app.Fragment
|
Constants |
|
---|---|
int |
HEADERS_DISABLED 标题片段被禁用,并且永远不会显示。 |
int |
HEADERS_ENABLED 标题片段默认启用并显示。 |
int |
HEADERS_HIDDEN 标题片段默认启用并隐藏。 |
Inherited constants |
---|
From interface android.content.ComponentCallbacks2
|
Public constructors |
|
---|---|
BrowseFragment() |
Public methods |
|
---|---|
static Bundle |
createArgs(Bundle args, String title, int headersState) 为浏览片段创建参数。 |
void |
enableMainFragmentScaling(boolean enable) 在存在标题时启用对主要片段的缩放。 |
void |
enableRowScaling(boolean enable) 此方法已弃用。 改用 |
ObjectAdapter |
getAdapter() 返回包含片段行的适配器。 |
int |
getBrandColor() 返回浏览片段的品牌颜色。 |
HeadersFragment |
getHeadersFragment() 如果HeadersFragment尚未创建,则获取当前绑定的HeadersFragment或null。 |
int |
getHeadersState() 返回浏览片段中标题列的状态。 |
final BrowseFragment.MainFragmentAdapterRegistry |
getMainFragmentRegistry() |
OnItemViewClickedListener |
getOnItemViewClickedListener() 返回项目Clicked侦听器。 |
OnItemViewSelectedListener |
getOnItemViewSelectedListener() 返回一个项目选择侦听器。 |
final ProgressBarManager |
getProgressBarManager() 返回 |
RowsFragment |
getRowsFragment() 如果它与BrowseFragment绑定,则获取RowsFragment;如果尚未创建BrowseFragment或者绑定了不同的片段,则为null。 |
int |
getSelectedPosition() 获取当前选定行的位置。 |
final boolean |
isHeadersTransitionOnBackEnabled() 如果启用标题转换回密钥支持,则返回true。 |
boolean |
isInHeadersTransition() 如果标题转换当前正在运行,则返回true。 |
boolean |
isShowingHeaders() 如果显示标题,则返回true。 |
void |
onCreate(Bundle savedInstanceState) 被调用来做一个片段的初始创建。 |
View |
onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 调用以使片段实例化其用户界面视图。 |
void |
onDestroy() 当碎片不再使用时调用。 |
void |
onDestroyView() 当以前由 |
void |
onSaveInstanceState(Bundle outState) 打电话询问片段以保存其当前的动态状态,以便稍后可以在重新启动其进程的新实例时重新构建它。 |
void |
onStart() 当片段对用户可见时调用。 |
void |
onViewCreated(View view, Bundle savedInstanceState) 在 |
void |
prepareEntranceTransition() 启用入口转换。 |
void |
setAdapter(ObjectAdapter adapter) 设置包含片段行的适配器。 |
void |
setBrandColor(int color) 设置浏览片段的品牌颜色。 |
void |
setBrowseTransitionListener(BrowseFragment.BrowseTransitionListener listener) 设置浏览片段转换的侦听器。 |
void |
setHeaderPresenterSelector(PresenterSelector headerPresenterSelector) 设置用于呈现行标题的 |
void |
setHeadersState(int headersState) 设置浏览片段中标题列的状态。 |
final void |
setHeadersTransitionOnBackEnabled(boolean headersBackStackEnabled) 启用/禁用返回密钥支持上的标题转换。 |
void |
setOnItemViewClickedListener(OnItemViewClickedListener listener) 在片段上设置项目单击的侦听器。 |
void |
setOnItemViewSelectedListener(OnItemViewSelectedListener listener) 设置项目选择侦听器。 |
void |
setSelectedPosition(int position) 用平滑动画设置选定的行位置。 |
void |
setSelectedPosition(int rowPosition, boolean smooth, Presenter.ViewHolderTask rowHolderTask) 选择一个行并在行上执行可选任务。 |
void |
setSelectedPosition(int position, boolean smooth) 设置选定的行位置。 |
void |
startEntranceTransition() 当fragment完成加载数据时,它应该调用startEntranceTransition()来执行入口转换。 |
void |
startHeadersTransition(boolean withHeaders) 开始标题转换。 |
Protected methods |
|
---|---|
Object |
createEntranceTransition() 创建入口过渡。 |
void |
onEntranceTransitionEnd() 入场过渡结束时的回调。 |
void |
onEntranceTransitionPrepare() 准备入场过渡时回调。 |
void |
onEntranceTransitionStart() 入口转换开始时的回调。 |
void |
runEntranceTransition(Object entranceTransition) 运行入口转换。 |
Inherited methods |
|
---|---|
From class android.support.v17.leanback.app.BrandedFragment
|
|
From class android.app.Fragment
|
|
From class java.lang.Object
|
|
From interface android.content.ComponentCallbacks2
|
|
From interface android.view.View.OnCreateContextMenuListener
|
|
From interface android.content.ComponentCallbacks
|
int HEADERS_DISABLED
标题片段被禁用,并且永远不会显示。
常量值:3(0x00000003)
int HEADERS_ENABLED
标题片段默认启用并显示。
常数值:1(0x00000001)
int HEADERS_HIDDEN
标题片段默认启用并隐藏。
常量值:2(0x00000002)
BrowseFragment ()
Bundle createArgs (Bundle args, String title, int headersState)
为浏览片段创建参数。
Parameters | |
---|---|
args |
Bundle : The Bundle to place arguments into, or null if the method should return a new Bundle. |
title |
String : The title of the BrowseFragment. |
headersState |
int : The initial state of the headers of the BrowseFragment. Must be one of HEADERS_ENABLED , HEADERS_HIDDEN , or HEADERS_DISABLED . |
Returns | |
---|---|
Bundle |
A Bundle with the given arguments for creating a BrowseFragment. |
void enableMainFragmentScaling (boolean enable)
在存在标题时启用对主要片段的缩放。 对于页面/行片段,只有在启用此方法和isScalingEnabled()
启用缩放。
Parameters | |
---|---|
enable |
boolean : true to enable row scaling |
void enableRowScaling (boolean enable)
此方法已弃用。
改为使用enableMainFragmentScaling(boolean)
。
Parameters | |
---|---|
enable |
boolean : true to enable row scaling |
int getBrandColor ()
返回浏览片段的品牌颜色。 默认是透明的。
Returns | |
---|---|
int |
HeadersFragment getHeadersFragment ()
如果HeadersFragment尚未创建,则获取当前绑定的HeadersFragment或null。
Returns | |
---|---|
HeadersFragment |
Currently bound HeadersFragment or null if HeadersFragment has not been created yet. |
int getHeadersState ()
返回浏览片段中标题列的状态。
Returns | |
---|---|
int |
BrowseFragment.MainFragmentAdapterRegistry getMainFragmentRegistry ()
Returns | |
---|---|
BrowseFragment.MainFragmentAdapterRegistry |
OnItemViewClickedListener getOnItemViewClickedListener ()
返回项目Clicked侦听器。
Returns | |
---|---|
OnItemViewClickedListener |
OnItemViewSelectedListener getOnItemViewSelectedListener ()
返回一个项目选择侦听器。
Returns | |
---|---|
OnItemViewSelectedListener |
ProgressBarManager getProgressBarManager ()
返回 ProgressBarManager
。
Returns | |
---|---|
ProgressBarManager |
RowsFragment getRowsFragment ()
如果它与BrowseFragment绑定,则获取RowsFragment;如果尚未创建BrowseFragment或者绑定了不同的片段,则为null。
Returns | |
---|---|
RowsFragment |
RowsFragment if it's bound to BrowseFragment or null otherwise. |
int getSelectedPosition ()
获取当前选定行的位置。
Returns | |
---|---|
int |
Position of currently selected row. |
boolean isHeadersTransitionOnBackEnabled ()
如果启用标题转换回密钥支持,则返回true。
Returns | |
---|---|
boolean |
boolean isInHeadersTransition ()
如果标题转换当前正在运行,则返回true。
Returns | |
---|---|
boolean |
boolean isShowingHeaders ()
如果显示标题,则返回true。
Returns | |
---|---|
boolean |
void onCreate (Bundle savedInstanceState)
被调用来做一个片段的初始创建。 这是在onAttach(Activity)
之后和onAttach(Activity)
之前onCreateView(LayoutInflater, ViewGroup, Bundle)
,但如果片段实例在Activity重新创建期间保留(请参阅setRetainInstance(boolean)
),则不会调用它。
请注意,这可以在片段的活动仍处于创建过程中时调用。 因此,您不能依赖于此时正在初始化活动的内容视图层次结构。 如果您想在创建活动本身后进行工作,请参阅onActivityCreated(Bundle)
。
如果您的应用targetSdkVersion
为23或更低,则onCreate
返回后将恢复从savedInstanceState恢复的子片段。 当瞄准N或更高版本并在N或更新的平台版本上运行时,它们将被恢复Fragment.onCreate
。
Parameters | |
---|---|
savedInstanceState |
Bundle : If the fragment is being re-created from a previous saved state, this is the state. |
View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
调用以使片段实例化其用户界面视图。 这是可选的,非图形片段可以返回null(这是默认实现)。 这将在onCreate(Bundle)
和onActivityCreated(Bundle)
之间onActivityCreated(Bundle)
。
如果你从这里返回一个视图,那么当视图被释放时,你将在以后被调用 onDestroyView()
。
Parameters | |
---|---|
inflater |
LayoutInflater : The LayoutInflater object that can be used to inflate any views in the fragment, |
container |
ViewGroup : If non-null, this is the parent view that the fragment's UI should be attached to. The fragment should not add the view itself, but this can be used to generate the LayoutParams of the view. |
savedInstanceState |
Bundle : If non-null, this fragment is being re-constructed from a previous saved state as given here. |
Returns | |
---|---|
View |
Return the View for the fragment's UI, or null. |
void onDestroyView ()
当先前由onCreateView(LayoutInflater, ViewGroup, Bundle)
创建的视图已从片段中分离时调用。 下次需要显示片段时,将创建一个新视图。 这是在onStop()
之后和onDestroy()
之前onDestroy()
。 无论它被称为onCreateView(LayoutInflater, ViewGroup, Bundle)
返回一个非空的观点。 内部它在视图的状态被保存之后但在它的父对象被移除之前被调用。
void onSaveInstanceState (Bundle outState)
打电话询问片段以保存其当前的动态状态,以便稍后可以在重新启动其进程的新实例时重新构建它。 如果片段的新实例后需要创建,您的包放在这里的数据将提供给包可onCreate(Bundle)
, onCreateView(LayoutInflater, ViewGroup, Bundle)
,并onActivityCreated(Bundle)
。
这对应于Activity.onSaveInstanceState(Bundle)
,其中的大部分讨论也适用于此。 但请注意: 此方法可能在onDestroy()
之前的任何时间onDestroy()
。 有很多情况下,碎片可能大部分被拆除(例如,当放置在背堆栈上而没有UI显示时),但是它的状态不会被保存直到其拥有的活动实际上需要保存其状态。
Parameters | |
---|---|
outState |
Bundle : Bundle in which to place your saved state. |
void onViewCreated (View view, Bundle savedInstanceState)
在onCreateView(LayoutInflater, ViewGroup, Bundle)
已经返回之后立即调用,但在任何已保存的状态恢复到视图之前。 这让子类有机会在知道其视图层次已完全创建后自行初始化。 此时片段的视图层次不会附加到其父项。
Parameters | |
---|---|
view |
View : The View returned by onCreateView(LayoutInflater, ViewGroup, Bundle) . |
savedInstanceState |
Bundle : If non-null, this fragment is being re-constructed from a previous saved state as given here. |
void prepareEntranceTransition ()
启用入口转换。
入口过渡是标准的滑入式过渡,在浏览屏幕和细节屏幕中显示数据行。
该方法在LOLLIPOP(API21)之前被忽略。
必须在onCreate()之前或之前调用此方法。 当savedInstance为空时,通常应启用入口转换,以便从instanceState恢复的片段不会运行额外的入口转换。 当启用入口转换时,片段将首先隐藏标题和内容。 当行数据准备就绪时,应用程序必须调用startEntranceTransition()
才能启动转换,否则行将永远不可见。
它类似于android:windowsEnterTransition,可以认为是由应用程序控制的后期执行的android:windowsEnterTransition。 该应用需要它的原因有两个:
过渡对象由createEntranceTransition()返回。 通常,应用程序不需要覆盖浏览和详细信息提供的默认转换。
void setAdapter (ObjectAdapter adapter)
设置包含片段行的适配器。
适配器引用的项目必须来自Row
。 这些行将由行片段和标题片段(如果未禁用)用于呈现浏览行。
Parameters | |
---|---|
adapter |
ObjectAdapter : An ObjectAdapter for the browse rows. All items must derive from Row . |
void setBrandColor (int color)
设置浏览片段的品牌颜色。 品牌颜色用作浏览片段中UI元素的主要颜色。 例如,标题片段的背景颜色使用品牌颜色。
Parameters | |
---|---|
color |
int : The color to use as the brand color of the fragment. |
void setBrowseTransitionListener (BrowseFragment.BrowseTransitionListener listener)
设置浏览片段转换的侦听器。
Parameters | |
---|---|
listener |
BrowseFragment.BrowseTransitionListener : The listener to call when a browse headers transition begins or ends. |
void setHeaderPresenterSelector (PresenterSelector headerPresenterSelector)
设置用于呈现行标题的 PresenterSelector
。
Parameters | |
---|---|
headerPresenterSelector |
PresenterSelector : The PresenterSelector that will determine the Presenter for each row header. |
void setHeadersState (int headersState)
设置浏览片段中标题列的状态。 必须是一个HEADERS_ENABLED
, HEADERS_HIDDEN
,或HEADERS_DISABLED
。
Parameters | |
---|---|
headersState |
int : The state of the headers for the browse fragment. |
void setHeadersTransitionOnBackEnabled (boolean headersBackStackEnabled)
启用/禁用返回密钥支持上的标题转换。 这是默认启用的。 当显示标题时,BrowseFragment将添加一个返回栈条目。 当按下后退键时运行标题转换仅在标题状态为HEADERS_ENABLED
或HEADERS_HIDDEN
。
注意:如果一个Activity有自己的onBackPressed()处理,则必须禁用此功能。 您可以在自己的后台堆栈处理中使用startHeadersTransition(boolean)
和BrowseFragment.BrowseTransitionListener
。
Parameters | |
---|---|
headersBackStackEnabled |
boolean
|
void setOnItemViewClickedListener (OnItemViewClickedListener listener)
在片段上设置项目单击的侦听器。 OnItemViewClickedListener将覆盖View.OnClickListener
期间项目演示者设置的onCreateViewHolder(ViewGroup)
。 所以一般来说,开发者应该选择其中一个听众,但不能同时选择两个。
Parameters | |
---|---|
listener |
OnItemViewClickedListener
|
void setOnItemViewSelectedListener (OnItemViewSelectedListener listener)
设置项目选择侦听器。
Parameters | |
---|---|
listener |
OnItemViewSelectedListener
|
void setSelectedPosition (int position)
用平滑动画设置选定的行位置。
Parameters | |
---|---|
position |
int
|
void setSelectedPosition (int rowPosition, boolean smooth, Presenter.ViewHolderTask rowHolderTask)
选择一个行并在行上执行可选任务。 例如, setSelectedPosition(10, true, new ListRowPresenterSelectItemViewHolderTask(5))
滚动到第11行并选择该行的第6个项目。 如果RowsFragment尚未创建(即在onCreateView(LayoutInflater, ViewGroup, Bundle)
之前),该方法将被忽略。
Parameters | |
---|---|
rowPosition |
int : Which row to select. |
smooth |
boolean : True to scroll to the row, false for no animation. |
rowHolderTask |
Presenter.ViewHolderTask : Optional task to perform on the Row. When the task is not null, headers fragment will be collapsed. |
void setSelectedPosition (int position, boolean smooth)
设置选定的行位置。
Parameters | |
---|---|
position |
int
|
smooth |
boolean
|
void startEntranceTransition ()
当fragment完成加载数据时,它应该调用startEntranceTransition()来执行入口转换。 只有满足以下两个条件,startEntranceTransition()才会开始转换:
如果在onViewCreated()之前调用startEntranceTransition(),则在创建视图时它将等待并执行。
void startHeadersTransition (boolean withHeaders)
开始标题转换。
此方法将开始转换为显示或隐藏标题,具体取决于withHeaders的值。 如果此浏览片段的标题被禁用,则此方法将引发异常。
Parameters | |
---|---|
withHeaders |
boolean : True if the headers should transition to being shown, false if the transition should result in headers being hidden. |
Object createEntranceTransition ()
创建入口过渡。 子类可以重写以手动加载资源或构造的转换。 通常,应用不需要覆盖浏览和详细信息提供的默认转换。
Returns | |
---|---|
Object |
void onEntranceTransitionEnd ()
入场过渡结束时的回调。
void onEntranceTransitionPrepare ()
准备入场过渡时回调。 这是片段应该停止用户输入和动画。
void onEntranceTransitionStart ()
入口转换开始时的回调。 这是片段应停止处理布局。
void runEntranceTransition (Object entranceTransition)
运行入口转换。 子类可以使用TransitionManager执行go(Scene)或beginDelayedTransition()。 应用程序不应重写浏览和细节片段的默认实现。
Parameters | |
---|---|
entranceTransition |
Object
|