public class DetailsFragment
extends BrandedFragment
java.lang.Object | |||
↳ | android.app.Fragment | ||
↳ | android.support.v17.leanback.app.BrandedFragment | ||
↳ | android.support.v17.leanback.app.DetailsFragment |
Known Direct Subclasses |
用于创建Leanback详细信息屏幕的片段。
DetailsFragment将其 ObjectAdapter
的元素呈现为垂直列表中的一组行。适配器的 PresenterSelector
必须维护 RowPresenter
子类。
FullWidthDetailsOverviewRowPresenter
is found in adapter, DetailsFragment will setup default behavior of the DetailsOverviewRow:
setupDetailsOverviewRowPresenter(FullWidthDetailsOverviewRowPresenter)
. onSetDetailsOverviewRowStatus(FullWidthDetailsOverviewRowPresenter, FullWidthDetailsOverviewRowPresenter.ViewHolder, int, int, int)
. 推荐使用DetailsFragment的活动主题是
Theme_Leanback_Details
with activity shared element transition for FullWidthDetailsOverviewRowPresenter
. Theme_Leanback_Details_NoSharedElementTransition
if shared element transition is not needed, for example if first row is not rendered by FullWidthDetailsOverviewRowPresenter
. Inherited XML attributes |
|
---|---|
From class android.app.Fragment
|
Inherited constants |
---|
From interface android.content.ComponentCallbacks2
|
Public constructors |
|
---|---|
DetailsFragment() |
Protected methods |
|
---|---|
Object |
createEntranceTransition() 创建入口过渡。 |
View |
inflateTitle(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) 此方法已弃用。 改为 |
void |
onEntranceTransitionEnd() 入场过渡结束时的回调。 |
void |
onEntranceTransitionPrepare() 准备入场过渡时回调。 |
void |
onEntranceTransitionStart() 入口转换开始时的回调。 |
void |
onSetDetailsOverviewRowStatus(FullWidthDetailsOverviewRowPresenter presenter, FullWidthDetailsOverviewRowPresenter.ViewHolder viewHolder, int adapterPosition, int selectedPosition, int selectedSubPosition) 当当前所选行位置或所选子位置改变时,调用以更改DetailsOverviewRow查看状态。 |
void |
onSetRowStatus(RowPresenter presenter, RowPresenter.ViewHolder viewHolder, int adapterPosition, int selectedPosition, int selectedSubPosition) 当当前所选行位置或所选子位置改变时,调用每个可见行以更改视图状态。 |
void |
runEntranceTransition(Object entranceTransition) 运行入口转换。 |
void |
setupDetailsOverviewRowPresenter(FullWidthDetailsOverviewRowPresenter presenter) |
void |
setupPresenter(Presenter rowPresenter) 调用以设置适配器的每个Presenter通过 |
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
|
DetailsFragment ()
BaseOnItemViewClickedListener getOnItemViewClickedListener ()
返回项目点击侦听器。
Returns | |
---|---|
BaseOnItemViewClickedListener |
ProgressBarManager getProgressBarManager ()
返回 ProgressBarManager
。
Returns | |
---|---|
ProgressBarManager |
RowsFragment getRowsFragment ()
获取为DetailsFragment显示多行的嵌入式RowsFragment。 如果未创建DetailsFragment的视图,则该方法返回null。
Returns | |
---|---|
RowsFragment |
Embedded RowsFragment showing multiple rows for DetailsFragment. |
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. |
View onInflateTitleView (LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState)
由installTitleView(LayoutInflater, ViewGroup, Bundle)
调用来夸大标题视图。 默认实现使用布局文件lb_browse_title。 子类可以覆盖并使用其自己的布局,该布局必须具有实现TitleViewAdapter.Provider
id为browse_title_group的后代。 如果不需要标题,子类可能会返回null。
Parameters | |
---|---|
inflater |
LayoutInflater : The LayoutInflater object that can be used to inflate any views in the fragment, |
parent |
ViewGroup : Parent of title view. |
savedInstanceState |
Bundle : If non-null, this fragment is being re-constructed from a previous saved state as given here. |
Returns | |
---|---|
View |
Title view which must have a descendant with id browse_title_group that implements TitleViewAdapter.Provider , or null for no title view. |
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 setOnItemViewClickedListener (BaseOnItemViewClickedListener listener)
设置项目点击侦听器。
Parameters | |
---|---|
listener |
BaseOnItemViewClickedListener
|
void setOnItemViewSelectedListener (BaseOnItemViewSelectedListener listener)
设置项目选择侦听器。
Parameters | |
---|---|
listener |
BaseOnItemViewSelectedListener
|
void setSelectedPosition (int position)
用平滑动画设置选定的行位置。
Parameters | |
---|---|
position |
int
|
void setSelectedPosition (int position, boolean smooth)
设置选定的行位置。
Parameters | |
---|---|
position |
int
|
smooth |
boolean
|
void startEntranceTransition ()
当fragment完成加载数据时,它应该调用startEntranceTransition()来执行入口转换。 只有满足以下两个条件,startEntranceTransition()才会开始转换:
如果在onViewCreated()之前调用startEntranceTransition(),则在创建视图时它将等待并执行。
Object createEntranceTransition ()
创建入口过渡。 子类可以重写以手动加载资源或构造的转换。 通常,应用不需要覆盖浏览和详细信息提供的默认转换。
Returns | |
---|---|
Object |
View inflateTitle (LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState)
此方法已弃用。
改为onInflateTitleView(LayoutInflater, ViewGroup, Bundle)
。
Parameters | |
---|---|
inflater |
LayoutInflater
|
parent |
ViewGroup
|
savedInstanceState |
Bundle
|
Returns | |
---|---|
View |
void onEntranceTransitionEnd ()
入场过渡结束时的回调。
void onEntranceTransitionPrepare ()
准备入场过渡时回调。 这是片段应该停止用户输入和动画。
void onEntranceTransitionStart ()
入口转换开始时的回调。 这是片段应停止处理布局。
void onSetDetailsOverviewRowStatus (FullWidthDetailsOverviewRowPresenter presenter, FullWidthDetailsOverviewRowPresenter.ViewHolder viewHolder, int adapterPosition, int selectedPosition, int selectedSubPosition)
当当前所选行位置或所选子位置改变时,调用以更改DetailsOverviewRow查看状态。 子类可能会覆盖。 :立足岗位三种状态之间的默认实现开关STATE_HALF
, STATE_FULL
和STATE_SMALL
。
Parameters | |
---|---|
presenter |
FullWidthDetailsOverviewRowPresenter : The presenter used to create row ViewHolder. |
viewHolder |
FullWidthDetailsOverviewRowPresenter.ViewHolder : The visible (attached) row ViewHolder, note that it may or may not be selected. |
adapterPosition |
int : The adapter position of viewHolder inside adapter. |
selectedPosition |
int : The adapter position of currently selected row. |
selectedSubPosition |
int : The sub position within currently selected row. This is used When a row has multiple alignment positions. |
void onSetRowStatus (RowPresenter presenter, RowPresenter.ViewHolder viewHolder, int adapterPosition, int selectedPosition, int selectedSubPosition)
当当前所选行位置或所选子位置改变时,调用每个可见行以更改视图状态。 子类可能会覆盖。 默认实现调用onSetDetailsOverviewRowStatus(FullWidthDetailsOverviewRowPresenter, FullWidthDetailsOverviewRowPresenter.ViewHolder, int, int, int)
如果主持人是实例FullWidthDetailsOverviewRowPresenter
。
Parameters | |
---|---|
presenter |
RowPresenter : The presenter used to create row ViewHolder. |
viewHolder |
RowPresenter.ViewHolder : The visible (attached) row ViewHolder, note that it may or may not be selected. |
adapterPosition |
int : The adapter position of viewHolder inside adapter. |
selectedPosition |
int : The adapter position of currently selected row. |
selectedSubPosition |
int : The sub position within currently selected row. This is used When a row has multiple alignment positions. |
void runEntranceTransition (Object entranceTransition)
运行入口转换。 子类可以使用TransitionManager执行go(Scene)或beginDelayedTransition()。 应用程序不应重写浏览和细节片段的默认实现。
Parameters | |
---|---|
entranceTransition |
Object
|
void setupDetailsOverviewRowPresenter (FullWidthDetailsOverviewRowPresenter presenter)
调用设置FullWidthDetailsOverviewRowPresenter
。 默认实现为FullWidthDetailsOverviewRowPresenter的ViewHolder添加两个对齐位置( ItemAlignmentFacet
)以在片段中对齐。
Parameters | |
---|---|
presenter |
FullWidthDetailsOverviewRowPresenter
|
void setupPresenter (Presenter rowPresenter)
调用以设置适配器的每个Presenter通过setAdapter(ObjectAdapter)
。 请注意,安装程序只应更改在DetailsFragment中有意义的Presenter行为。 例如一行如何在细节片段中对齐。 默认实现调用setupDetailsOverviewRowPresenter(FullWidthDetailsOverviewRowPresenter)
Parameters | |
---|---|
rowPresenter |
Presenter
|