Most visited

Recently visited

BrowseFragment

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.BrowseTransitionListenerstartHeadersTransition(boolean)

建议使用BrowseFragment的主题是 Theme_Leanback_Browse

Summary

Nested classes

class BrowseFragment.BrowseTransitionListener

浏览器标题和行之间的转换。

class BrowseFragment.FragmentFactory<T extends Fragment>

工厂类负责在给定当前项目的情况下创建片段。

interface BrowseFragment.FragmentHost

BrowseFragment公开给客户的可能的一组操作。

class BrowseFragment.ListRowFragmentFactory

FragmentFactory实现ListRow

class BrowseFragment.MainFragmentAdapter<T extends Fragment>

定义BrowseFragment与其主要内容片段之间的交互的界面。

interface BrowseFragment.MainFragmentAdapterProvider

接口由所有片段实现以提供BrowseFragment.MainFragmentAdapter的实例。

class BrowseFragment.MainFragmentAdapterRegistry

注册表类维护Row子类映射到BrowseFragment.FragmentFactory

class BrowseFragment.MainFragmentRowsAdapter<T extends Fragment>

这用于将信息传递给RowsFragment或其子类。

interface BrowseFragment.MainFragmentRowsAdapterProvider

接口由RowsFragment实现,它是提供BrowseFragment.MainFragmentRowsAdapter实例的子类。

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)

此方法已弃用。 改用enableMainFragmentScaling(boolean)

ObjectAdapter getAdapter()

返回包含片段行的适配器。

int getBrandColor()

返回浏览片段的品牌颜色。

HeadersFragment getHeadersFragment()

如果HeadersFragment尚未创建,则获取当前绑定的HeadersFragment或null。

int getHeadersState()

返回浏览片段中标题列的状态。

final BrowseFragment.MainFragmentAdapterRegistry getMainFragmentRegistry()
OnItemViewClickedListener getOnItemViewClickedListener()

返回项目Clicked侦听器。

OnItemViewSelectedListener getOnItemViewSelectedListener()

返回一个项目选择侦听器。

final ProgressBarManager getProgressBarManager()

返回 ProgressBarManager

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()

当以前由 onCreateView(LayoutInflater, ViewGroup, Bundle)创建的视图已从片段中分离时调用。

void onSaveInstanceState(Bundle outState)

打电话询问片段以保存其当前的动态状态,以便稍后可以在重新启动其进程的新实例时重新构建它。

void onStart()

当片段对用户可见时调用。

void onViewCreated(View view, Bundle savedInstanceState)

onCreateView(LayoutInflater, ViewGroup, Bundle)已返回之后立即调用,但在任何已保存状态已恢复到视图之前调用。

void prepareEntranceTransition()

启用入口转换。

void setAdapter(ObjectAdapter adapter)

设置包含片段行的适配器。

void setBrandColor(int color)

设置浏览片段的品牌颜色。

void setBrowseTransitionListener(BrowseFragment.BrowseTransitionListener listener)

设置浏览片段转换的侦听器。

void setHeaderPresenterSelector(PresenterSelector headerPresenterSelector)

设置用于呈现行标题的 PresenterSelector

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

Constants

HEADERS_DISABLED

int HEADERS_DISABLED

标题片段被禁用,并且永远不会显示。

常量值:3(0x00000003)

HEADERS_ENABLED

int HEADERS_ENABLED

标题片段默认启用并显示。

常数值:1(0x00000001)

HEADERS_HIDDEN

int HEADERS_HIDDEN

标题片段默认启用并隐藏。

常量值:2(0x00000002)

Public constructors

BrowseFragment

BrowseFragment ()

Public methods

createArgs

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.

enableMainFragmentScaling

void enableMainFragmentScaling (boolean enable)

在存在标题时启用对主要片段的缩放。 对于页面/行片段,只有在启用此方法和isScalingEnabled()启用缩放。

Parameters
enable boolean: true to enable row scaling

enableRowScaling

void enableRowScaling (boolean enable)

此方法已弃用。
改为使用enableMainFragmentScaling(boolean)

Parameters
enable boolean: true to enable row scaling

getAdapter

ObjectAdapter getAdapter ()

返回包含片段行的适配器。

Returns
ObjectAdapter

getBrandColor

int getBrandColor ()

返回浏览片段的品牌颜色。 默认是透明的。

Returns
int

getHeadersFragment

HeadersFragment getHeadersFragment ()

如果HeadersFragment尚未创建,则获取当前绑定的HeadersFragment或null。

Returns
HeadersFragment Currently bound HeadersFragment or null if HeadersFragment has not been created yet.

getHeadersState

int getHeadersState ()

返回浏览片段中标题列的状态。

Returns
int

getMainFragmentRegistry

BrowseFragment.MainFragmentAdapterRegistry getMainFragmentRegistry ()

Returns
BrowseFragment.MainFragmentAdapterRegistry

getOnItemViewClickedListener

OnItemViewClickedListener getOnItemViewClickedListener ()

返回项目Clicked侦听器。

Returns
OnItemViewClickedListener

getOnItemViewSelectedListener

OnItemViewSelectedListener getOnItemViewSelectedListener ()

返回一个项目选择侦听器。

Returns
OnItemViewSelectedListener

getProgressBarManager

ProgressBarManager getProgressBarManager ()

返回 ProgressBarManager

Returns
ProgressBarManager

getRowsFragment

RowsFragment getRowsFragment ()

如果它与BrowseFragment绑定,则获取RowsFragment;如果尚未创建BrowseFragment或者绑定了不同的片段,则为null。

Returns
RowsFragment RowsFragment if it's bound to BrowseFragment or null otherwise.

getSelectedPosition

int getSelectedPosition ()

获取当前选定行的位置。

Returns
int Position of currently selected row.

isHeadersTransitionOnBackEnabled

boolean isHeadersTransitionOnBackEnabled ()

如果启用标题转换回密钥支持,则返回true。

Returns
boolean

isInHeadersTransition

boolean isInHeadersTransition ()

如果标题转换当前正在运行,则返回true。

Returns
boolean

isShowingHeaders

boolean isShowingHeaders ()

如果显示标题,则返回true。

Returns
boolean

onCreate

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.

onCreateView

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.

onDestroy

void onDestroy ()

当碎片不再使用时调用。 这是在onStop()之后和onDetach()之前onDetach()

onDestroyView

void onDestroyView ()

当先前由onCreateView(LayoutInflater, ViewGroup, Bundle)创建的视图已从片段中分离时调用。 下次需要显示片段时,将创建一个新视图。 这是在onStop()之后和onDestroy()之前onDestroy() 无论它被称为onCreateView(LayoutInflater, ViewGroup, Bundle)返回一个非空的观点。 内部它在视图的状态被保存之后但在它的父对象被移除之前被调用。

onSaveInstanceState

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.

onStart

void onStart ()

当片段对用户可见时调用。 这通常与包含Activity的生命周期的Activity.onStart相关联。

onViewCreated

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.

prepareEntranceTransition

void prepareEntranceTransition ()

启用入口转换。

入口过渡是标准的滑入式过渡,在浏览屏幕和细节屏幕中显示数据行。

该方法在LOLLIPOP(API21)之前被忽略。

必须在onCreate()之前或之前调用此方法。 当savedInstance为空时,通常应启用入口转换,以便从instanceState恢复的片段不会运行额外的入口转换。 当启用入口转换时,片段将首先隐藏标题和内容。 当行数据准备就绪时,应用程序必须调用startEntranceTransition()才能启动转换,否则行将永远不可见。

它类似于android:windowsEnterTransition,可以认为是由应用程序控制的后期执行的android:windowsEnterTransition。 该应用需要它的原因有两个:

  • Workaround the problem that activity transition is not available between launcher and app. Browse activity must programmatically start the slide-in transition.
  • Separates DetailsOverviewRow transition from other rows transition. So that the DetailsOverviewRow transition can be executed earlier without waiting for all rows to be loaded.
  • 过渡对象由createEntranceTransition()返回。 通常,应用程序不需要覆盖浏览和详细信息提供的默认转换。

    setAdapter

    void setAdapter (ObjectAdapter adapter)

    设置包含片段行的适配器。

    适配器引用的项目必须来自Row 这些行将由行片段和标题片段(如果未禁用)用于呈现浏览行。

    Parameters
    adapter ObjectAdapter: An ObjectAdapter for the browse rows. All items must derive from Row.

    setBrandColor

    void setBrandColor (int color)

    设置浏览片段的品牌颜色。 品牌颜色用作浏览片段中UI元素的主要颜色。 例如,标题片段的背景颜色使用品牌颜色。

    Parameters
    color int: The color to use as the brand color of the fragment.

    setBrowseTransitionListener

    void setBrowseTransitionListener (BrowseFragment.BrowseTransitionListener listener)

    设置浏览片段转换的侦听器。

    Parameters
    listener BrowseFragment.BrowseTransitionListener: The listener to call when a browse headers transition begins or ends.

    setHeaderPresenterSelector

    void setHeaderPresenterSelector (PresenterSelector headerPresenterSelector)

    设置用于呈现行标题的 PresenterSelector

    Parameters
    headerPresenterSelector PresenterSelector: The PresenterSelector that will determine the Presenter for each row header.

    setHeadersState

    void setHeadersState (int headersState)

    设置浏览片段中标题列的状态。 必须是一个HEADERS_ENABLEDHEADERS_HIDDEN ,或HEADERS_DISABLED

    Parameters
    headersState int: The state of the headers for the browse fragment.

    setHeadersTransitionOnBackEnabled

    void setHeadersTransitionOnBackEnabled (boolean headersBackStackEnabled)

    启用/禁用返回密钥支持上的标题转换。 这是默认启用的。 当显示标题时,BrowseFragment将添加一个返回栈条目。 当按下后退键时运行标题转换仅在标题状态为HEADERS_ENABLEDHEADERS_HIDDEN

    注意:如果一个Activity有自己的onBackPressed()处理,则必须禁用此功能。 您可以在自己的后台堆栈处理中使用startHeadersTransition(boolean)BrowseFragment.BrowseTransitionListener

    Parameters
    headersBackStackEnabled boolean

    setOnItemViewClickedListener

    void setOnItemViewClickedListener (OnItemViewClickedListener listener)

    在片段上设置项目单击的侦听器。 OnItemViewClickedListener将覆盖View.OnClickListener期间项目演示者设置的onCreateViewHolder(ViewGroup) 所以一般来说,开发者应该选择其中一个听众,但不能同时选择两个。

    Parameters
    listener OnItemViewClickedListener

    setOnItemViewSelectedListener

    void setOnItemViewSelectedListener (OnItemViewSelectedListener listener)

    设置项目选择侦听器。

    Parameters
    listener OnItemViewSelectedListener

    setSelectedPosition

    void setSelectedPosition (int position)

    用平滑动画设置选定的行位置。

    Parameters
    position int

    setSelectedPosition

    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.

    setSelectedPosition

    void setSelectedPosition (int position, 
                    boolean smooth)

    设置选定的行位置。

    Parameters
    position int
    smooth boolean

    startEntranceTransition

    void startEntranceTransition ()

    当fragment完成加载数据时,它应该调用startEntranceTransition()来执行入口转换。 只有满足以下两个条件,startEntranceTransition()才会开始转换:

  • prepareEntranceTransition() was called.
  • has not executed entrance transition yet.
  • 如果在onViewCreated()之前调用startEntranceTransition(),则在创建视图时它将等待并执行。

    startHeadersTransition

    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.

    Protected methods

    createEntranceTransition

    Object createEntranceTransition ()

    创建入口过渡。 子类可以重写以手动加载资源或构造的转换。 通常,应用不需要覆盖浏览和详细信息提供的默认转换。

    Returns
    Object

    onEntranceTransitionEnd

    void onEntranceTransitionEnd ()

    入场过渡结束时的回调。

    onEntranceTransitionPrepare

    void onEntranceTransitionPrepare ()

    准备入场过渡时回调。 这是片段应该停止用户输入和动画。

    onEntranceTransitionStart

    void onEntranceTransitionStart ()

    入口转换开始时的回调。 这是片段应停止处理布局。

    runEntranceTransition

    void runEntranceTransition (Object entranceTransition)

    运行入口转换。 子类可以使用TransitionManager执行go(Scene)或beginDelayedTransition()。 应用程序不应重写浏览和细节片段的默认实现。

    Parameters
    entranceTransition Object

    Hooray!