Package com.google.android.exoplayer2.ui

## Class StyledPlayerControlView

- java.lang.Object
- - android.view.View
  - - android.view.ViewGroup
    - - android.widget.FrameLayout
      - - com.google.android.exoplayer2.ui.StyledPlayerControlView

- All Implemented Interfaces:
    `Drawable.Callback`, `AccessibilityEventSource`, `KeyEvent.Callback`, `ViewManager`, `ViewParent`

      public class StyledPlayerControlView
      extends FrameLayout

  A view for controlling `Player` instances.

  A StyledPlayerControlView can be customized by setting attributes (or calling corresponding methods), overriding drawables, overriding the view's layout file, or by specifying a custom view layout file.

  ### Attributes

  The following attributes can be set on a StyledPlayerControlView when used in a layout XML file:
  - `show_timeout` - The time between the last user interaction and the controls being automatically hidden, in milliseconds. Use zero if the controls should not automatically timeout.
    - Corresponding method: `setShowTimeoutMs(int)`
    - Default: `DEFAULT_SHOW_TIMEOUT_MS`
  - `show_rewind_button` - Whether the rewind button is shown.
    - Corresponding method: `setShowRewindButton(boolean)`
    - Default: true
  - `show_fastforward_button` - Whether the fast forward button is shown.
    - Corresponding method: `setShowFastForwardButton(boolean)`
    - Default: true
  - `show_previous_button` - Whether the previous button is shown.
    - Corresponding method: `setShowPreviousButton(boolean)`
    - Default: true
  - `show_next_button` - Whether the next button is shown.
    - Corresponding method: `setShowNextButton(boolean)`
    - Default: true
  - `rewind_increment` - The duration of the rewind applied when the user taps the rewind button, in milliseconds. Use zero to disable the rewind button.
    - Corresponding method: `setControlDispatcher(ControlDispatcher)`
    - Default: `DefaultControlDispatcher.DEFAULT_REWIND_MS`
  - `fastforward_increment` - Like `rewind_increment`, but for fast forward.
    - Corresponding method: `setControlDispatcher(ControlDispatcher)`
    - Default: `DefaultControlDispatcher.DEFAULT_FAST_FORWARD_MS`
  - `repeat_toggle_modes` - A flagged enumeration value specifying which repeat mode toggle options are enabled. Valid values are: `none`, `one`, `all`, or `one|all`.
    - Corresponding method: `setRepeatToggleModes(int)`
    - Default: `DEFAULT_REPEAT_TOGGLE_MODES`
  - `show_shuffle_button` - Whether the shuffle button is shown.
    - Corresponding method: `setShowShuffleButton(boolean)`
    - Default: false
  - `show_subtitle_button` - Whether the subtitle button is shown.
    - Corresponding method: `setShowSubtitleButton(boolean)`
    - Default: false
  - `animation_enabled` - Whether an animation is used to show and hide the playback controls.
    - Corresponding method: `setAnimationEnabled(boolean)`
    - Default: true
  - `time_bar_min_update_interval` - Specifies the minimum interval between time bar position updates.
    - Corresponding method: `setTimeBarMinUpdateInterval(int)`
    - Default: `DEFAULT_TIME_BAR_MIN_UPDATE_INTERVAL_MS`
  - `controller_layout_id` - Specifies the id of the layout to be inflated. See below for more details.
    - Corresponding method: None
    - Default: `R.layout.exo_styled_player_control_view`
  - All attributes that can be set on `DefaultTimeBar` can also be set on a StyledPlayerControlView, and will be propagated to the inflated `DefaultTimeBar` unless the layout is overridden to specify a custom `exo_progress` (see below).

  ### Overriding drawables

  The drawables used by StyledPlayerControlView (with its default layout file) can be overridden by drawables with the same names defined in your application. The drawables that can be overridden are:
  - `exo_styled_controls_play` - The play icon.
  - `exo_styled_controls_pause` - The pause icon.
  - `exo_styled_controls_rewind` - The background of rewind icon.
  - `exo_styled_controls_fastforward` - The background of fast forward icon.
  - `exo_styled_controls_previous` - The previous icon.
  - `exo_styled_controls_next` - The next icon.
  - `exo_styled_controls_repeat_off` - The repeat icon for `Player.REPEAT_MODE_OFF`.
  - `exo_styled_controls_repeat_one` - The repeat icon for `Player.REPEAT_MODE_ONE`.
  - `exo_styled_controls_repeat_all` - The repeat icon for `Player.REPEAT_MODE_ALL`.
  - `exo_styled_controls_shuffle_off` - The shuffle icon when shuffling is disabled.
  - `exo_styled_controls_shuffle_on` - The shuffle icon when shuffling is enabled.
  - `exo_styled_controls_vr` - The VR icon.

  ### Overriding the layout file

  To customize the layout of StyledPlayerControlView throughout your app, or just for certain configurations, you can define `exo_styled_player_control_view.xml` layout files in your application `res/layout*` directories. But, in this case, you need to be careful since the default animation implementation expects certain relative positions between children. See also Specifying a custom layout file.

  The layout files in your `res/layout*` will override the one provided by the ExoPlayer library, and will be inflated for use by StyledPlayerControlView. The view identifies and binds its children by looking for the following ids:

  - `exo_play_pause` - The play and pause button.
    - Type: `ImageView`
  - `exo_rew` - The rewind button.
    - Type: `View`
  - `exo_rew_with_amount` - The rewind button with rewind amount.
    - Type: `TextView`
    - Note: StyledPlayerControlView will programmatically set the text with the rewind amount in seconds. Ignored if an `exo_rew` exists. Otherwise, it works as the rewind button.
  - `exo_ffwd` - The fast forward button.
    - Type: `View`
  - `exo_ffwd_with_amount` - The fast forward button with fast forward amount.
    - Type: `TextView`
    - Note: StyledPlayerControlView will programmatically set the text with the fast forward amount in seconds. Ignored if an `exo_ffwd` exists. Otherwise, it works as the fast forward button.
  - `exo_prev` - The previous button.
    - Type: `View`
  - `exo_next` - The next button.
    - Type: `View`
  - `exo_repeat_toggle` - The repeat toggle button.
    - Type: `ImageView`
    - Note: StyledPlayerControlView will programmatically set the drawable on the repeat toggle button according to the player's current repeat mode. The drawables used are `exo_controls_repeat_off`, `exo_controls_repeat_one` and `exo_controls_repeat_all`. See the section above for information on overriding these drawables.
  - `exo_shuffle` - The shuffle button.
    - Type: `ImageView`
    - Note: StyledPlayerControlView will programmatically set the drawable on the shuffle button according to the player's current repeat mode. The drawables used are `exo_controls_shuffle_off` and `exo_controls_shuffle_on`. See the section above for information on overriding these drawables.
  - `exo_vr` - The VR mode button.
    - Type: `View`
  - `exo_subtitle` - The subtitle button.
    - Type: `ImageView`
  - `exo_fullscreen` - The fullscreen button.
    - Type: `ImageView`
  - `exo_minimal_fullscreen` - The fullscreen button in minimal mode.
    - Type: `ImageView`
  - `exo_position` - Text view displaying the current playback position.
    - Type: `TextView`
  - `exo_duration` - Text view displaying the current media duration.
    - Type: `TextView`
  - `exo_progress_placeholder` - A placeholder that's replaced with the inflated `DefaultTimeBar`. Ignored if an `exo_progress` view exists.
    - Type: `View`
  - `exo_progress` - Time bar that's updated during playback and allows seeking. `DefaultTimeBar` attributes set on the StyledPlayerControlView will not be automatically propagated through to this instance. If a view exists with this id, any `exo_progress_placeholder` view will be ignored.
    - Type: `TimeBar`

  All child views are optional and so can be omitted if not required, however where defined they must be of the expected type.

  ### Specifying a custom layout file

  Defining your own `exo_styled_player_control_view.xml` is useful to customize the layout of StyledPlayerControlView throughout your application. It's also possible to customize the layout for a single instance in a layout file. This is achieved by setting the `controller_layout_id` attribute on a StyledPlayerControlView. This will cause the specified layout to be inflated instead of `exo_styled_player_control_view.xml` for only the instance on which the attribute is set.

  You need to be careful when you set the `controller_layout_id`, because the default animation implementation expects certain relative positions between children.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static interface` | `StyledPlayerControlView.OnFullScreenModeChangedListener` | Listener to be invoked to inform the fullscreen mode is changed.
    `static interface` | `StyledPlayerControlView.ProgressUpdateListener` | Listener to be notified when progress has been updated.
    `static interface` | `StyledPlayerControlView.VisibilityListener` | Listener to be notified about changes of the visibility of the UI control.

    - ### Nested classes/interfaces inherited from class android.widget.FrameLayout

      `FrameLayout.LayoutParams`

    - ### Nested classes/interfaces inherited from class android.view.ViewGroup

      `ViewGroup.MarginLayoutParams, ViewGroup.OnHierarchyChangeListener`

    - ### Nested classes/interfaces inherited from class android.view.View

      `View.AccessibilityDelegate, View.BaseSavedState, View.DragShadowBuilder, View.MeasureSpec, View.OnApplyWindowInsetsListener, View.OnAttachStateChangeListener, View.OnCapturedPointerListener, View.OnClickListener, View.OnContextClickListener, View.OnCreateContextMenuListener, View.OnDragListener, View.OnFocusChangeListener, View.OnGenericMotionListener, View.OnHoverListener, View.OnKeyListener, View.OnLayoutChangeListener, View.OnLongClickListener, View.OnScrollChangeListener, View.OnSystemUiVisibilityChangeListener, View.OnTouchListener, View.OnUnhandledKeyEventListener`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static int` | `DEFAULT_REPEAT_TOGGLE_MODES` | The default repeat toggle modes.
    `static int` | `DEFAULT_SHOW_TIMEOUT_MS` | The default show timeout, in milliseconds.
    `static int` | `DEFAULT_TIME_BAR_MIN_UPDATE_INTERVAL_MS` | The default minimum interval between time bar position updates.
    `static int` | `MAX_WINDOWS_FOR_MULTI_WINDOW_TIME_BAR` | The maximum number of windows that can be shown in a multi-window time bar.

    - ### Fields inherited from class android.view.ViewGroup

      `CLIP_TO_PADDING_MASK, FOCUS_AFTER_DESCENDANTS, FOCUS_BEFORE_DESCENDANTS, FOCUS_BLOCK_DESCENDANTS, LAYOUT_MODE_CLIP_BOUNDS, LAYOUT_MODE_OPTICAL_BOUNDS, PERSISTENT_ALL_CACHES, PERSISTENT_ANIMATION_CACHE, PERSISTENT_NO_CACHE, PERSISTENT_SCROLLING_CACHE`

    - ### Fields inherited from class android.view.View

      `ACCESSIBILITY_LIVE_REGION_ASSERTIVE, ACCESSIBILITY_LIVE_REGION_NONE, ACCESSIBILITY_LIVE_REGION_POLITE, ALPHA, AUTOFILL_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS, AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE, AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DAY, AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH, AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR, AUTOFILL_HINT_CREDIT_CARD_NUMBER, AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE, AUTOFILL_HINT_EMAIL_ADDRESS, AUTOFILL_HINT_NAME, AUTOFILL_HINT_PASSWORD, AUTOFILL_HINT_PHONE, AUTOFILL_HINT_POSTAL_ADDRESS, AUTOFILL_HINT_POSTAL_CODE, AUTOFILL_HINT_USERNAME, AUTOFILL_TYPE_DATE, AUTOFILL_TYPE_LIST, AUTOFILL_TYPE_NONE, AUTOFILL_TYPE_TEXT, AUTOFILL_TYPE_TOGGLE, DRAG_FLAG_GLOBAL, DRAG_FLAG_GLOBAL_PERSISTABLE_URI_PERMISSION, DRAG_FLAG_GLOBAL_PREFIX_URI_PERMISSION, DRAG_FLAG_GLOBAL_URI_READ, DRAG_FLAG_GLOBAL_URI_WRITE, DRAG_FLAG_OPAQUE, DRAWING_CACHE_QUALITY_AUTO, DRAWING_CACHE_QUALITY_HIGH, DRAWING_CACHE_QUALITY_LOW, EMPTY_STATE_SET, ENABLED_FOCUSED_SELECTED_STATE_SET, ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, ENABLED_FOCUSED_STATE_SET, ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET, ENABLED_SELECTED_STATE_SET, ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET, ENABLED_STATE_SET, ENABLED_WINDOW_FOCUSED_STATE_SET, FIND_VIEWS_WITH_CONTENT_DESCRIPTION, FIND_VIEWS_WITH_TEXT, FOCUS_BACKWARD, FOCUS_DOWN, FOCUS_FORWARD, FOCUS_LEFT, FOCUS_RIGHT, FOCUS_UP, FOCUSABLE, FOCUSABLE_AUTO, FOCUSABLES_ALL, FOCUSABLES_TOUCH_MODE, FOCUSED_SELECTED_STATE_SET, FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, FOCUSED_STATE_SET, FOCUSED_WINDOW_FOCUSED_STATE_SET, GONE, HAPTIC_FEEDBACK_ENABLED, IMPORTANT_FOR_ACCESSIBILITY_AUTO, IMPORTANT_FOR_ACCESSIBILITY_NO, IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS, IMPORTANT_FOR_ACCESSIBILITY_YES, IMPORTANT_FOR_AUTOFILL_AUTO, IMPORTANT_FOR_AUTOFILL_NO, IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS, IMPORTANT_FOR_AUTOFILL_YES, IMPORTANT_FOR_AUTOFILL_YES_EXCLUDE_DESCENDANTS, IMPORTANT_FOR_CONTENT_CAPTURE_AUTO, IMPORTANT_FOR_CONTENT_CAPTURE_NO, IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS, IMPORTANT_FOR_CONTENT_CAPTURE_YES, IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS, INVISIBLE, KEEP_SCREEN_ON, LAYER_TYPE_HARDWARE, LAYER_TYPE_NONE, LAYER_TYPE_SOFTWARE, LAYOUT_DIRECTION_INHERIT, LAYOUT_DIRECTION_LOCALE, LAYOUT_DIRECTION_LTR, LAYOUT_DIRECTION_RTL, MEASURED_HEIGHT_STATE_SHIFT, MEASURED_SIZE_MASK, MEASURED_STATE_MASK, MEASURED_STATE_TOO_SMALL, NO_ID, NOT_FOCUSABLE, OVER_SCROLL_ALWAYS, OVER_SCROLL_IF_CONTENT_SCROLLS, OVER_SCROLL_NEVER, PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET, PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, PRESSED_ENABLED_FOCUSED_STATE_SET, PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET, PRESSED_ENABLED_SELECTED_STATE_SET, PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET, PRESSED_ENABLED_STATE_SET, PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET, PRESSED_FOCUSED_SELECTED_STATE_SET, PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, PRESSED_FOCUSED_STATE_SET, PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET, PRESSED_SELECTED_STATE_SET, PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET, PRESSED_STATE_SET, PRESSED_WINDOW_FOCUSED_STATE_SET, ROTATION, ROTATION_X, ROTATION_Y, SCALE_X, SCALE_Y, SCREEN_STATE_OFF, SCREEN_STATE_ON, SCROLL_AXIS_HORIZONTAL, SCROLL_AXIS_NONE, SCROLL_AXIS_VERTICAL, SCROLL_INDICATOR_BOTTOM, SCROLL_INDICATOR_END, SCROLL_INDICATOR_LEFT, SCROLL_INDICATOR_RIGHT, SCROLL_INDICATOR_START, SCROLL_INDICATOR_TOP, SCROLLBAR_POSITION_DEFAULT, SCROLLBAR_POSITION_LEFT, SCROLLBAR_POSITION_RIGHT, SCROLLBARS_INSIDE_INSET, SCROLLBARS_INSIDE_OVERLAY, SCROLLBARS_OUTSIDE_INSET, SCROLLBARS_OUTSIDE_OVERLAY, SELECTED_STATE_SET, SELECTED_WINDOW_FOCUSED_STATE_SET, SOUND_EFFECTS_ENABLED, STATUS_BAR_HIDDEN, STATUS_BAR_VISIBLE, SYSTEM_UI_FLAG_FULLSCREEN, SYSTEM_UI_FLAG_HIDE_NAVIGATION, SYSTEM_UI_FLAG_IMMERSIVE, SYSTEM_UI_FLAG_IMMERSIVE_STICKY, SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN, SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION, SYSTEM_UI_FLAG_LAYOUT_STABLE, SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR, SYSTEM_UI_FLAG_LIGHT_STATUS_BAR, SYSTEM_UI_FLAG_LOW_PROFILE, SYSTEM_UI_FLAG_VISIBLE, SYSTEM_UI_LAYOUT_FLAGS, TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_GRAVITY, TEXT_ALIGNMENT_INHERIT, TEXT_ALIGNMENT_TEXT_END, TEXT_ALIGNMENT_TEXT_START, TEXT_ALIGNMENT_VIEW_END, TEXT_ALIGNMENT_VIEW_START, TEXT_DIRECTION_ANY_RTL, TEXT_DIRECTION_FIRST_STRONG, TEXT_DIRECTION_FIRST_STRONG_LTR, TEXT_DIRECTION_FIRST_STRONG_RTL, TEXT_DIRECTION_INHERIT, TEXT_DIRECTION_LOCALE, TEXT_DIRECTION_LTR, TEXT_DIRECTION_RTL, TRANSLATION_X, TRANSLATION_Y, TRANSLATION_Z, VIEW_LOG_TAG, VISIBLE, WINDOW_FOCUSED_STATE_SET, X, Y, Z`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `StyledPlayerControlView​(Context context)` |
    `StyledPlayerControlView​(Context context, AttributeSet attrs)` |
    `StyledPlayerControlView​(Context context, AttributeSet attrs, int defStyleAttr)` |
    `StyledPlayerControlView​(Context context, AttributeSet attrs, int defStyleAttr, AttributeSet playbackAttrs)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addVisibilityListener​(StyledPlayerControlView.VisibilityListener listener)` | Adds a `StyledPlayerControlView.VisibilityListener`.
    `boolean` | `dispatchKeyEvent​(KeyEvent event)` |
    `boolean` | `dispatchMediaKeyEvent​(KeyEvent event)` | Called to process media key events.
    `Player` | `getPlayer()` | Returns the `Player` currently being controlled by this view, or null if no player is set.
    `int` | `getRepeatToggleModes()` | Returns which repeat toggle modes are enabled.
    `boolean` | `getShowShuffleButton()` | Returns whether the shuffle button is shown.
    `boolean` | `getShowSubtitleButton()` | Returns whether the subtitle button is shown.
    `int` | `getShowTimeoutMs()` | Returns the playback controls timeout.
    `boolean` | `getShowVrButton()` | Returns whether the VR button is shown.
    `void` | `hide()` | Hides the controller.
    `void` | `hideImmediately()` | Hides the controller without any animation.
    `boolean` | `isAnimationEnabled()` | Returns whether an animation is used to show and hide the playback controls.
    `boolean` | `isFullyVisible()` | Returns whether the controller is fully visible, which means all UI controls are visible.
    `boolean` | `isVisible()` | Returns whether the controller is currently visible.
    `void` | `onAttachedToWindow()` |
    `void` | `onDetachedFromWindow()` |
    `protected void` | `onLayout​(boolean changed, int left, int top, int right, int bottom)` |
    `void` | `removeVisibilityListener​(StyledPlayerControlView.VisibilityListener listener)` | Removes a `StyledPlayerControlView.VisibilityListener`.
    `void` | `setAnimationEnabled​(boolean animationEnabled)` | Sets whether an animation is used to show and hide the playback controls.
    `void` | `setControlDispatcher​(ControlDispatcher controlDispatcher)` | Sets the `ControlDispatcher`.
    `void` | `setExtraAdGroupMarkers​(long[] extraAdGroupTimesMs, boolean[] extraPlayedAdGroups)` | Sets the millisecond positions of extra ad markers relative to the start of the window (or timeline, if in multi-window mode) and whether each extra ad has been played or not.
    `void` | `setOnFullScreenModeChangedListener​(StyledPlayerControlView.OnFullScreenModeChangedListener listener)` | Sets a listener to be called when the fullscreen mode should be changed.
    `void` | `setPlaybackPreparer​(PlaybackPreparer playbackPreparer)` | Deprecated. Use `setControlDispatcher(ControlDispatcher)` instead.
    `void` | `setPlayer​(Player player)` | Sets the `Player` to control.
    `void` | `setProgressUpdateListener​(StyledPlayerControlView.ProgressUpdateListener listener)` | Sets the `StyledPlayerControlView.ProgressUpdateListener`.
    `void` | `setRepeatToggleModes​(int repeatToggleModes)` | Sets which repeat toggle modes are enabled.
    `void` | `setShowFastForwardButton​(boolean showFastForwardButton)` | Sets whether the fast forward button is shown.
    `void` | `setShowMultiWindowTimeBar​(boolean showMultiWindowTimeBar)` | Sets whether the time bar should show all windows, as opposed to just the current one.
    `void` | `setShowNextButton​(boolean showNextButton)` | Sets whether the next button is shown.
    `void` | `setShowPreviousButton​(boolean showPreviousButton)` | Sets whether the previous button is shown.
    `void` | `setShowRewindButton​(boolean showRewindButton)` | Sets whether the rewind button is shown.
    `void` | `setShowShuffleButton​(boolean showShuffleButton)` | Sets whether the shuffle button is shown.
    `void` | `setShowSubtitleButton​(boolean showSubtitleButton)` | Sets whether the subtitle button is shown.
    `void` | `setShowTimeoutMs​(int showTimeoutMs)` | Sets the playback controls timeout.
    `void` | `setShowVrButton​(boolean showVrButton)` | Sets whether the VR button is shown.
    `void` | `setTimeBarMinUpdateInterval​(int minUpdateIntervalMs)` | Sets the minimum interval between time bar position updates.
    `void` | `setVrButtonListener​(View.OnClickListener onClickListener)` | Sets listener for the VR button.
    `void` | `show()` | Shows the playback controls.

    - ### Methods inherited from class android.widget.FrameLayout

      `checkLayoutParams, generateDefaultLayoutParams, generateLayoutParams, generateLayoutParams, getAccessibilityClassName, getConsiderGoneChildrenWhenMeasuring, getMeasureAllChildren, onMeasure, setForegroundGravity, setMeasureAllChildren, shouldDelayChildPressedState`

    - ### Methods inherited from class android.view.ViewGroup

      `addChildrenForAccessibility, addExtraDataToAccessibilityNodeInfo, addFocusables, addKeyboardNavigationClusters, addStatesFromChildren, addTouchables, addView, addView, addView, addView, addView, addViewInLayout, addViewInLayout, attachLayoutAnimationParameters, attachViewToParent, bringChildToFront, canAnimate, childDrawableStateChanged, childHasTransientStateChanged, cleanupLayoutState, clearChildFocus, clearDisappearingChildren, clearFocus, debug, detachAllViewsFromParent, detachViewFromParent, detachViewFromParent, detachViewsFromParent, dispatchApplyWindowInsets, dispatchCapturedPointerEvent, dispatchConfigurationChanged, dispatchDisplayHint, dispatchDragEvent, dispatchDraw, dispatchDrawableHotspotChanged, dispatchFinishTemporaryDetach, dispatchFreezeSelfOnly, dispatchGenericFocusedEvent, dispatchGenericPointerEvent, dispatchHoverEvent, dispatchKeyEventPreIme, dispatchKeyShortcutEvent, dispatchPointerCaptureChanged, dispatchProvideAutofillStructure, dispatchProvideStructure, dispatchRestoreInstanceState, dispatchSaveInstanceState, dispatchSetActivated, dispatchSetPressed, dispatchSetSelected, dispatchStartTemporaryDetach, dispatchSystemUiVisibilityChanged, dispatchThawSelfOnly, dispatchTouchEvent, dispatchTrackballEvent, dispatchUnhandledMove, dispatchVisibilityChanged, dispatchWindowFocusChanged, dispatchWindowInsetsAnimationEnd, dispatchWindowInsetsAnimationPrepare, dispatchWindowInsetsAnimationProgress, dispatchWindowInsetsAnimationStart, dispatchWindowSystemUiVisiblityChanged, dispatchWindowVisibilityChanged, drawableStateChanged, drawChild, endViewTransition, findFocus, findViewsWithText, focusableViewAvailable, focusSearch, gatherTransparentRegion, getChildAt, getChildCount, getChildDrawingOrder, getChildDrawingOrder, getChildMeasureSpec, getChildStaticTransformation, getChildVisibleRect, getClipChildren, getClipToPadding, getDescendantFocusability, getFocusedChild, getLayoutAnimation, getLayoutAnimationListener, getLayoutMode, getLayoutTransition, getNestedScrollAxes, getOverlay, getPersistentDrawingCache, getTouchscreenBlocksFocus, hasFocus, hasTransientState, indexOfChild, invalidateChild, invalidateChildInParent, isAlwaysDrawnWithCacheEnabled, isAnimationCacheEnabled, isChildrenDrawingOrderEnabled, isChildrenDrawnWithCacheEnabled, isLayoutSuppressed, isMotionEventSplittingEnabled, isTransitionGroup, jumpDrawablesToCurrentState, layout, measureChild, measureChildren, measureChildWithMargins, notifySubtreeAccessibilityStateChanged, offsetDescendantRectToMyCoords, offsetRectIntoDescendantCoords, onCreateDrawableState, onDescendantInvalidated, onInterceptHoverEvent, onInterceptTouchEvent, onNestedFling, onNestedPreFling, onNestedPrePerformAccessibilityAction, onNestedPreScroll, onNestedScroll, onNestedScrollAccepted, onRequestFocusInDescendants, onRequestSendAccessibilityEvent, onResolvePointerIcon, onStartNestedScroll, onStopNestedScroll, onViewAdded, onViewRemoved, recomputeViewAttributes, removeAllViews, removeAllViewsInLayout, removeDetachedView, removeView, removeViewAt, removeViewInLayout, removeViews, removeViewsInLayout, requestChildFocus, requestChildRectangleOnScreen, requestDisallowInterceptTouchEvent, requestFocus, requestSendAccessibilityEvent, requestTransparentRegion, restoreDefaultFocus, scheduleLayoutAnimation, setAddStatesFromChildren, setAlwaysDrawnWithCacheEnabled, setAnimationCacheEnabled, setChildrenDrawingCacheEnabled, setChildrenDrawingOrderEnabled, setChildrenDrawnWithCacheEnabled, setClipChildren, setClipToPadding, setDescendantFocusability, setLayoutAnimation, setLayoutAnimationListener, setLayoutMode, setLayoutTransition, setMotionEventSplittingEnabled, setOnHierarchyChangeListener, setPersistentDrawingCache, setStaticTransformationsEnabled, setTouchscreenBlocksFocus, setTransitionGroup, setWindowInsetsAnimationCallback, showContextMenuForChild, showContextMenuForChild, startActionModeForChild, startActionModeForChild, startLayoutAnimation, startViewTransition, suppressLayout, updateViewLayout`

    - ### Methods inherited from class android.view.View

      `addFocusables, addOnAttachStateChangeListener, addOnLayoutChangeListener, addOnUnhandledKeyEventListener, animate, announceForAccessibility, autofill, autofill, awakenScrollBars, awakenScrollBars, awakenScrollBars, bringToFront, buildDrawingCache, buildDrawingCache, buildLayer, callOnClick, cancelDragAndDrop, cancelLongPress, cancelPendingInputEvents, canResolveLayoutDirection, canResolveTextAlignment, canResolveTextDirection, canScrollHorizontally, canScrollVertically, checkInputConnectionProxy, clearAnimation, combineMeasuredStates, computeHorizontalScrollExtent, computeHorizontalScrollOffset, computeHorizontalScrollRange, computeScroll, computeSystemWindowInsets, computeVerticalScrollExtent, computeVerticalScrollOffset, computeVerticalScrollRange, createAccessibilityNodeInfo, createContextMenu, destroyDrawingCache, dispatchGenericMotionEvent, dispatchNestedFling, dispatchNestedPreFling, dispatchNestedPrePerformAccessibilityAction, dispatchNestedPreScroll, dispatchNestedScroll, dispatchPopulateAccessibilityEvent, draw, drawableHotspotChanged, findViewById, findViewWithTag, fitSystemWindows, focusSearch, forceHasOverlappingRendering, forceLayout, generateViewId, getAccessibilityDelegate, getAccessibilityLiveRegion, getAccessibilityNodeProvider, getAccessibilityPaneTitle, getAccessibilityTraversalAfter, getAccessibilityTraversalBefore, getAlpha, getAnimation, getAnimationMatrix, getApplicationWindowToken, getAttributeResolutionStack, getAttributeSourceResourceMap, getAutofillHints, getAutofillId, getAutofillType, getAutofillValue, getBackground, getBackgroundTintBlendMode, getBackgroundTintList, getBackgroundTintMode, getBaseline, getBottom, getBottomFadingEdgeStrength, getBottomPaddingOffset, getCameraDistance, getClipBounds, getClipBounds, getClipToOutline, getContentCaptureSession, getContentDescription, getContext, getContextMenuInfo, getDefaultFocusHighlightEnabled, getDefaultSize, getDisplay, getDrawableState, getDrawingCache, getDrawingCache, getDrawingCacheBackgroundColor, getDrawingCacheQuality, getDrawingRect, getDrawingTime, getElevation, getExplicitStyle, getFilterTouchesWhenObscured, getFitsSystemWindows, getFocusable, getFocusables, getFocusedRect, getForeground, getForegroundGravity, getForegroundTintBlendMode, getForegroundTintList, getForegroundTintMode, getGlobalVisibleRect, getGlobalVisibleRect, getHandler, getHasOverlappingRendering, getHeight, getHitRect, getHorizontalFadingEdgeLength, getHorizontalScrollbarHeight, getHorizontalScrollbarThumbDrawable, getHorizontalScrollbarTrackDrawable, getId, getImportantForAccessibility, getImportantForAutofill, getImportantForContentCapture, getKeepScreenOn, getKeyDispatcherState, getLabelFor, getLayerType, getLayoutDirection, getLayoutParams, getLeft, getLeftFadingEdgeStrength, getLeftPaddingOffset, getLocalVisibleRect, getLocationInSurface, getLocationInWindow, getLocationOnScreen, getMatrix, getMeasuredHeight, getMeasuredHeightAndState, getMeasuredState, getMeasuredWidth, getMeasuredWidthAndState, getMinimumHeight, getMinimumWidth, getNextClusterForwardId, getNextFocusDownId, getNextFocusForwardId, getNextFocusLeftId, getNextFocusRightId, getNextFocusUpId, getOnFocusChangeListener, getOutlineAmbientShadowColor, getOutlineProvider, getOutlineSpotShadowColor, getOverScrollMode, getPaddingBottom, getPaddingEnd, getPaddingLeft, getPaddingRight, getPaddingStart, getPaddingTop, getParent, getParentForAccessibility, getPivotX, getPivotY, getPointerIcon, getResources, getRevealOnFocusHint, getRight, getRightFadingEdgeStrength, getRightPaddingOffset, getRootView, getRootWindowInsets, getRotation, getRotationX, getRotationY, getScaleX, getScaleY, getScrollBarDefaultDelayBeforeFade, getScrollBarFadeDuration, getScrollBarSize, getScrollBarStyle, getScrollIndicators, getScrollX, getScrollY, getSolidColor, getSourceLayoutResId, getStateDescription, getStateListAnimator, getSuggestedMinimumHeight, getSuggestedMinimumWidth, getSystemGestureExclusionRects, getSystemUiVisibility, getTag, getTag, getTextAlignment, getTextDirection, getTooltipText, getTop, getTopFadingEdgeStrength, getTopPaddingOffset, getTouchables, getTouchDelegate, getTransitionAlpha, getTransitionName, getTranslationX, getTranslationY, getTranslationZ, getUniqueDrawingId, getVerticalFadingEdgeLength, getVerticalScrollbarPosition, getVerticalScrollbarThumbDrawable, getVerticalScrollbarTrackDrawable, getVerticalScrollbarWidth, getViewTreeObserver, getVisibility, getWidth, getWindowAttachCount, getWindowId, getWindowInsetsController, getWindowSystemUiVisibility, getWindowToken, getWindowVisibility, getWindowVisibleDisplayFrame, getX, getY, getZ, hasExplicitFocusable, hasFocusable, hasNestedScrollingParent, hasOnClickListeners, hasOnLongClickListeners, hasOverlappingRendering, hasPointerCapture, hasWindowFocus, inflate, invalidate, invalidate, invalidate, invalidateDrawable, invalidateOutline, isAccessibilityFocused, isAccessibilityHeading, isActivated, isAttachedToWindow, isClickable, isContextClickable, isDirty, isDrawingCacheEnabled, isDuplicateParentStateEnabled, isEnabled, isFocusable, isFocusableInTouchMode, isFocused, isFocusedByDefault, isForceDarkAllowed, isHapticFeedbackEnabled, isHardwareAccelerated, isHorizontalFadingEdgeEnabled, isHorizontalScrollBarEnabled, isHovered, isImportantForAccessibility, isImportantForAutofill, isImportantForContentCapture, isInEditMode, isInLayout, isInTouchMode, isKeyboardNavigationCluster, isLaidOut, isLayoutDirectionResolved, isLayoutRequested, isLongClickable, isNestedScrollingEnabled, isOpaque, isPaddingOffsetRequired, isPaddingRelative, isPivotSet, isPressed, isSaveEnabled, isSaveFromParentEnabled, isScreenReaderFocusable, isScrollbarFadingEnabled, isScrollContainer, isSelected, isShowingLayoutBounds, isShown, isSoundEffectsEnabled, isTemporarilyDetached, isTextAlignmentResolved, isTextDirectionResolved, isVerticalFadingEdgeEnabled, isVerticalScrollBarEnabled, isVisibleToUserForAutofill, keyboardNavigationClusterSearch, measure, mergeDrawableStates, offsetLeftAndRight, offsetTopAndBottom, onAnimationEnd, onAnimationStart, onApplyWindowInsets, onCancelPendingInputEvents, onCapturedPointerEvent, onCheckIsTextEditor, onConfigurationChanged, onCreateContextMenu, onCreateInputConnection, onDisplayHint, onDragEvent, onDraw, onDrawForeground, onDrawScrollBars, onFilterTouchEventForSecurity, onFinishInflate, onFinishTemporaryDetach, onFocusChanged, onGenericMotionEvent, onHoverChanged, onHoverEvent, onInitializeAccessibilityEvent, onInitializeAccessibilityNodeInfo, onKeyDown, onKeyLongPress, onKeyMultiple, onKeyPreIme, onKeyShortcut, onKeyUp, onOverScrolled, onPointerCaptureChange, onPopulateAccessibilityEvent, onProvideAutofillStructure, onProvideAutofillVirtualStructure, onProvideContentCaptureStructure, onProvideStructure, onProvideVirtualStructure, onRestoreInstanceState, onRtlPropertiesChanged, onSaveInstanceState, onScreenStateChanged, onScrollChanged, onSetAlpha, onSizeChanged, onStartTemporaryDetach, onTouchEvent, onTrackballEvent, onVisibilityAggregated, onVisibilityChanged, onWindowFocusChanged, onWindowSystemUiVisibilityChanged, onWindowVisibilityChanged, overScrollBy, performAccessibilityAction, performClick, performContextClick, performContextClick, performHapticFeedback, performHapticFeedback, performLongClick, performLongClick, playSoundEffect, post, postDelayed, postInvalidate, postInvalidate, postInvalidateDelayed, postInvalidateDelayed, postInvalidateOnAnimation, postInvalidateOnAnimation, postOnAnimation, postOnAnimationDelayed, refreshDrawableState, releasePointerCapture, removeCallbacks, removeOnAttachStateChangeListener, removeOnLayoutChangeListener, removeOnUnhandledKeyEventListener, requestApplyInsets, requestFitSystemWindows, requestFocus, requestFocus, requestFocusFromTouch, requestLayout, requestPointerCapture, requestRectangleOnScreen, requestRectangleOnScreen, requestUnbufferedDispatch, requestUnbufferedDispatch, requireViewById, resetPivot, resolveSize, resolveSizeAndState, restoreHierarchyState, saveAttributeDataForStyleable, saveHierarchyState, scheduleDrawable, scrollBy, scrollTo, sendAccessibilityEvent, sendAccessibilityEventUnchecked, setAccessibilityDelegate, setAccessibilityHeading, setAccessibilityLiveRegion, setAccessibilityPaneTitle, setAccessibilityTraversalAfter, setAccessibilityTraversalBefore, setActivated, setAlpha, setAnimation, setAnimationMatrix, setAutofillHints, setAutofillId, setBackground, setBackgroundColor, setBackgroundDrawable, setBackgroundResource, setBackgroundTintBlendMode, setBackgroundTintList, setBackgroundTintMode, setBottom, setCameraDistance, setClickable, setClipBounds, setClipToOutline, setContentCaptureSession, setContentDescription, setContextClickable, setDefaultFocusHighlightEnabled, setDrawingCacheBackgroundColor, setDrawingCacheEnabled, setDrawingCacheQuality, setDuplicateParentStateEnabled, setElevation, setEnabled, setFadingEdgeLength, setFilterTouchesWhenObscured, setFitsSystemWindows, setFocusable, setFocusable, setFocusableInTouchMode, setFocusedByDefault, setForceDarkAllowed, setForeground, setForegroundTintBlendMode, setForegroundTintList, setForegroundTintMode, setHapticFeedbackEnabled, setHasTransientState, setHorizontalFadingEdgeEnabled, setHorizontalScrollBarEnabled, setHorizontalScrollbarThumbDrawable, setHorizontalScrollbarTrackDrawable, setHovered, setId, setImportantForAccessibility, setImportantForAutofill, setImportantForContentCapture, setKeepScreenOn, setKeyboardNavigationCluster, setLabelFor, setLayerPaint, setLayerType, setLayoutDirection, setLayoutParams, setLeft, setLeftTopRightBottom, setLongClickable, setMeasuredDimension, setMinimumHeight, setMinimumWidth, setNestedScrollingEnabled, setNextClusterForwardId, setNextFocusDownId, setNextFocusForwardId, setNextFocusLeftId, setNextFocusRightId, setNextFocusUpId, setOnApplyWindowInsetsListener, setOnCapturedPointerListener, setOnClickListener, setOnContextClickListener, setOnCreateContextMenuListener, setOnDragListener, setOnFocusChangeListener, setOnGenericMotionListener, setOnHoverListener, setOnKeyListener, setOnLongClickListener, setOnScrollChangeListener, setOnSystemUiVisibilityChangeListener, setOnTouchListener, setOutlineAmbientShadowColor, setOutlineProvider, setOutlineSpotShadowColor, setOverScrollMode, setPadding, setPaddingRelative, setPivotX, setPivotY, setPointerIcon, setPressed, setRevealOnFocusHint, setRight, setRotation, setRotationX, setRotationY, setSaveEnabled, setSaveFromParentEnabled, setScaleX, setScaleY, setScreenReaderFocusable, setScrollBarDefaultDelayBeforeFade, setScrollBarFadeDuration, setScrollbarFadingEnabled, setScrollBarSize, setScrollBarStyle, setScrollContainer, setScrollIndicators, setScrollIndicators, setScrollX, setScrollY, setSelected, setSoundEffectsEnabled, setStateDescription, setStateListAnimator, setSystemGestureExclusionRects, setSystemUiVisibility, setTag, setTag, setTextAlignment, setTextDirection, setTooltipText, setTop, setTouchDelegate, setTransitionAlpha, setTransitionName, setTransitionVisibility, setTranslationX, setTranslationY, setTranslationZ, setVerticalFadingEdgeEnabled, setVerticalScrollBarEnabled, setVerticalScrollbarPosition, setVerticalScrollbarThumbDrawable, setVerticalScrollbarTrackDrawable, setVisibility, setWillNotCacheDrawing, setWillNotDraw, setX, setY, setZ, showContextMenu, showContextMenu, startActionMode, startActionMode, startAnimation, startDrag, startDragAndDrop, startNestedScroll, stopNestedScroll, toString, transformMatrixToGlobal, transformMatrixToLocal, unscheduleDrawable, unscheduleDrawable, updateDragShadow, verifyDrawable, willNotCacheDrawing, willNotDraw`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface android.view.ViewParent

      `canResolveLayoutDirection, canResolveTextAlignment, canResolveTextDirection, createContextMenu, getLayoutDirection, getParent, getParentForAccessibility, getTextAlignment, getTextDirection, isLayoutDirectionResolved, isLayoutRequested, isTextAlignmentResolved, isTextDirectionResolved, keyboardNavigationClusterSearch, requestFitSystemWindows, requestLayout`

- - ### Field Detail

    - #### DEFAULT_SHOW_TIMEOUT_MS

          public static final int DEFAULT_SHOW_TIMEOUT_MS

      The default show timeout, in milliseconds.
      See Also:
        Constant Field Values

    - #### DEFAULT_REPEAT_TOGGLE_MODES

          @RepeatToggleModes
          public static final int DEFAULT_REPEAT_TOGGLE_MODES

      The default repeat toggle modes.
      See Also:
        Constant Field Values

    - #### DEFAULT_TIME_BAR_MIN_UPDATE_INTERVAL_MS

          public static final int DEFAULT_TIME_BAR_MIN_UPDATE_INTERVAL_MS

      The default minimum interval between time bar position updates.
      See Also:
        Constant Field Values

    - #### MAX_WINDOWS_FOR_MULTI_WINDOW_TIME_BAR

          public static final int MAX_WINDOWS_FOR_MULTI_WINDOW_TIME_BAR

      The maximum number of windows that can be shown in a multi-window time bar.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### StyledPlayerControlView

          public StyledPlayerControlView​(Context context)

    - #### StyledPlayerControlView

          public StyledPlayerControlView​(Context context,
                                         @Nullable
                                         AttributeSet attrs)

    - #### StyledPlayerControlView

          public StyledPlayerControlView​(Context context,
                                         @Nullable
                                         AttributeSet attrs,
                                         int defStyleAttr)

    - #### StyledPlayerControlView

          public StyledPlayerControlView​(Context context,
                                         @Nullable
                                         AttributeSet attrs,
                                         int defStyleAttr,
                                         @Nullable
                                         AttributeSet playbackAttrs)

  - ### Method Detail

    - #### getPlayer

          @Nullable
          public Player getPlayer()

      Returns the `Player` currently being controlled by this view, or null if no player is set.

    - #### setPlayer

          public void setPlayer​(@Nullable
                                Player player)

      Sets the `Player` to control.
      Parameters:
        `player` - The `Player` to control, or `null` to detach the current player. Only players which are accessed on the main thread are supported (`player.getApplicationLooper() == Looper.getMainLooper()`).

    - #### setShowMultiWindowTimeBar

          public void setShowMultiWindowTimeBar​(boolean showMultiWindowTimeBar)

      Sets whether the time bar should show all windows, as opposed to just the current one. If the timeline has a period with unknown duration or more than `MAX_WINDOWS_FOR_MULTI_WINDOW_TIME_BAR` windows the time bar will fall back to showing a single window.
      Parameters:
        `showMultiWindowTimeBar` - Whether the time bar should show all windows.

    - #### setExtraAdGroupMarkers

          public void setExtraAdGroupMarkers​(@Nullable
                                             long[] extraAdGroupTimesMs,
                                             @Nullable
                                             boolean[] extraPlayedAdGroups)

      Sets the millisecond positions of extra ad markers relative to the start of the window (or timeline, if in multi-window mode) and whether each extra ad has been played or not. The markers are shown in addition to any ad markers for ads in the player's timeline.
      Parameters:
        `extraAdGroupTimesMs` - The millisecond timestamps of the extra ad markers to show, or `null` to show no extra ad markers.
        `extraPlayedAdGroups` - Whether each ad has been played. Must be the same length as `extraAdGroupTimesMs`, or `null` if `extraAdGroupTimesMs` is `null`.

    - #### addVisibilityListener

          public void addVisibilityListener​(StyledPlayerControlView.VisibilityListener listener)

      Adds a `StyledPlayerControlView.VisibilityListener`.
      Parameters:
        `listener` - The listener to be notified about visibility changes.

    - #### removeVisibilityListener

          public void removeVisibilityListener​(StyledPlayerControlView.VisibilityListener listener)

      Removes a `StyledPlayerControlView.VisibilityListener`.
      Parameters:
        `listener` - The listener to be removed.

    - #### setProgressUpdateListener

          public void setProgressUpdateListener​(@Nullable
                                                StyledPlayerControlView.ProgressUpdateListener listener)

      Sets the `StyledPlayerControlView.ProgressUpdateListener`.
      Parameters:
        `listener` - The listener to be notified about when progress is updated.

    - #### setPlaybackPreparer

          @Deprecated
          public void setPlaybackPreparer​(@Nullable
                                          PlaybackPreparer playbackPreparer)

      Deprecated.
      Use `setControlDispatcher(ControlDispatcher)` instead. The view calls `ControlDispatcher.dispatchPrepare(Player)` instead of `PlaybackPreparer.preparePlayback()`. The `DefaultControlDispatcher` that the view uses by default, calls `Player.prepare()`. If you wish to customize this behaviour, you can provide a custom implementation of `ControlDispatcher.dispatchPrepare(Player)`.

    - #### setControlDispatcher

          public void setControlDispatcher​(ControlDispatcher controlDispatcher)

      Sets the `ControlDispatcher`.
      Parameters:
        `controlDispatcher` - The `ControlDispatcher`.

    - #### setShowRewindButton

          public void setShowRewindButton​(boolean showRewindButton)

      Sets whether the rewind button is shown.
      Parameters:
        `showRewindButton` - Whether the rewind button is shown.

    - #### setShowFastForwardButton

          public void setShowFastForwardButton​(boolean showFastForwardButton)

      Sets whether the fast forward button is shown.
      Parameters:
        `showFastForwardButton` - Whether the fast forward button is shown.

    - #### setShowPreviousButton

          public void setShowPreviousButton​(boolean showPreviousButton)

      Sets whether the previous button is shown.
      Parameters:
        `showPreviousButton` - Whether the previous button is shown.

    - #### setShowNextButton

          public void setShowNextButton​(boolean showNextButton)

      Sets whether the next button is shown.
      Parameters:
        `showNextButton` - Whether the next button is shown.

    - #### getShowTimeoutMs

          public int getShowTimeoutMs()

      Returns the playback controls timeout. The playback controls are automatically hidden after this duration of time has elapsed without user input.
      Returns:
        The duration in milliseconds. A non-positive value indicates that the controls will remain visible indefinitely.

    - #### setShowTimeoutMs

          public void setShowTimeoutMs​(int showTimeoutMs)

      Sets the playback controls timeout. The playback controls are automatically hidden after this duration of time has elapsed without user input.
      Parameters:
        `showTimeoutMs` - The duration in milliseconds. A non-positive value will cause the controls to remain visible indefinitely.

    - #### getRepeatToggleModes

          @RepeatToggleModes
          public int getRepeatToggleModes()

      Returns which repeat toggle modes are enabled.
      Returns:
        The currently enabled `RepeatModeUtil.RepeatToggleModes`.

    - #### setRepeatToggleModes

          public void setRepeatToggleModes​(@RepeatToggleModes
                                           int repeatToggleModes)

      Sets which repeat toggle modes are enabled.
      Parameters:
        `repeatToggleModes` - A set of `RepeatModeUtil.RepeatToggleModes`.

    - #### getShowShuffleButton

          public boolean getShowShuffleButton()

      Returns whether the shuffle button is shown.

    - #### setShowShuffleButton

          public void setShowShuffleButton​(boolean showShuffleButton)

      Sets whether the shuffle button is shown.
      Parameters:
        `showShuffleButton` - Whether the shuffle button is shown.

    - #### getShowSubtitleButton

          public boolean getShowSubtitleButton()

      Returns whether the subtitle button is shown.

    - #### setShowSubtitleButton

          public void setShowSubtitleButton​(boolean showSubtitleButton)

      Sets whether the subtitle button is shown.
      Parameters:
        `showSubtitleButton` - Whether the subtitle button is shown.

    - #### getShowVrButton

          public boolean getShowVrButton()

      Returns whether the VR button is shown.

    - #### setShowVrButton

          public void setShowVrButton​(boolean showVrButton)

      Sets whether the VR button is shown.
      Parameters:
        `showVrButton` - Whether the VR button is shown.

    - #### setVrButtonListener

          public void setVrButtonListener​(@Nullable
                                          View.OnClickListener onClickListener)

      Sets listener for the VR button.
      Parameters:
        `onClickListener` - Listener for the VR button, or null to clear the listener.

    - #### setAnimationEnabled

          public void setAnimationEnabled​(boolean animationEnabled)

      Sets whether an animation is used to show and hide the playback controls.
      Parameters:
        `animationEnabled` - Whether an animation is applied to show and hide playback controls.

    - #### isAnimationEnabled

          public boolean isAnimationEnabled()

      Returns whether an animation is used to show and hide the playback controls.

    - #### setTimeBarMinUpdateInterval

          public void setTimeBarMinUpdateInterval​(int minUpdateIntervalMs)

      Sets the minimum interval between time bar position updates.

      Note that smaller intervals, e.g. 33ms, will result in a smooth movement but will use more CPU resources while the time bar is visible, whereas larger intervals, e.g. 200ms, will result in a step-wise update with less CPU usage.

      Parameters:
        `minUpdateIntervalMs` - The minimum interval between time bar position updates, in milliseconds.

    - #### setOnFullScreenModeChangedListener

          public void setOnFullScreenModeChangedListener​(@Nullable
                                                         StyledPlayerControlView.OnFullScreenModeChangedListener listener)

      Sets a listener to be called when the fullscreen mode should be changed. A non-null listener needs to be set in order to display the fullscreen button.
      Parameters:
        `listener` - The listener to be called. A value of `null` removes any existing listener and hides the fullscreen button.

    - #### show

          public void show()

      Shows the playback controls. If `getShowTimeoutMs()` is positive then the controls will be automatically hidden after this duration of time has elapsed without user input.

    - #### hide

          public void hide()

      Hides the controller.

    - #### hideImmediately

          public void hideImmediately()

      Hides the controller without any animation.

    - #### isFullyVisible

          public boolean isFullyVisible()

      Returns whether the controller is fully visible, which means all UI controls are visible.

    - #### isVisible

          public boolean isVisible()

      Returns whether the controller is currently visible.

    - #### onAttachedToWindow

          public void onAttachedToWindow()

      Overrides:
        `onAttachedToWindow` in class `ViewGroup`

    - #### onDetachedFromWindow

          public void onDetachedFromWindow()

      Overrides:
        `onDetachedFromWindow` in class `ViewGroup`

    - #### dispatchKeyEvent

          public boolean dispatchKeyEvent​(KeyEvent event)

      Overrides:
        `dispatchKeyEvent` in class `ViewGroup`

    - #### dispatchMediaKeyEvent

          public boolean dispatchMediaKeyEvent​(KeyEvent event)

      Called to process media key events. Any `KeyEvent` can be passed but only media key events will be handled.
      Parameters:
        `event` - A key event.
      Returns:
        Whether the key event was handled.

    - #### onLayout

          protected void onLayout​(boolean changed,
                                  int left,
                                  int top,
                                  int right,
                                  int bottom)

      Overrides:
        `onLayout` in class `FrameLayout`