Class PlayerView
- java.lang.Object
-
- android.view.View
-
- android.view.ViewGroup
-
- android.widget.FrameLayout
-
- com.google.android.exoplayer2.ui.PlayerView
-
- All Implemented Interfaces:
Drawable.Callback
,AccessibilityEventSource
,KeyEvent.Callback
,ViewManager
,ViewParent
,AdViewProvider
public class PlayerView extends FrameLayout implements AdViewProvider
A high level view forPlayer
media playbacks. It displays video, subtitles and album art during playback, and displays playback controls using aPlayerControlView
.A PlayerView 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 PlayerView when used in a layout XML file:use_artwork
- Whether artwork is used if available in audio streams.- Corresponding method:
setUseArtwork(boolean)
- Default:
true
- Corresponding method:
default_artwork
- Default artwork to use if no artwork available in audio streams.- Corresponding method:
setDefaultArtwork(Drawable)
- Default:
null
- Corresponding method:
use_controller
- Whether the playback controls can be shown.- Corresponding method:
setUseController(boolean)
- Default:
true
- Corresponding method:
hide_on_touch
- Whether the playback controls are hidden by touch events.- Corresponding method:
setControllerHideOnTouch(boolean)
- Default:
true
- Corresponding method:
auto_show
- Whether the playback controls are automatically shown when playback starts, pauses, ends, or fails. If set to false, the playback controls can be manually operated withshowController()
andhideController()
.- Corresponding method:
setControllerAutoShow(boolean)
- Default:
true
- Corresponding method:
hide_during_ads
- Whether the playback controls are hidden during ads. Controls are always shown during ads if they are enabled and the player is paused.- Corresponding method:
setControllerHideDuringAds(boolean)
- Default:
true
- Corresponding method:
show_buffering
- Whether the buffering spinner is displayed when the player is buffering. Valid values arenever
,when_playing
andalways
.- Corresponding method:
setShowBuffering(int)
- Default:
never
- Corresponding method:
resize_mode
- Controls how video and album art is resized within the view. Valid values arefit
,fixed_width
,fixed_height
,fill
andzoom
.- Corresponding method:
setResizeMode(int)
- Default:
fit
- Corresponding method:
surface_type
- The type of surface view used for video playbacks. Valid values aresurface_view
,texture_view
,spherical_gl_surface_view
,video_decoder_gl_surface_view
andnone
. Usingnone
is recommended for audio only applications, since creating the surface can be expensive. Usingsurface_view
is recommended for video applications. Note, TextureView can only be used in a hardware accelerated window. When rendered in software, TextureView will draw nothing.- Corresponding method: None
- Default:
surface_view
shutter_background_color
- The background color of theexo_shutter
view.- Corresponding method:
setShutterBackgroundColor(int)
- Default:
unset
- Corresponding method:
keep_content_on_player_reset
- Whether the currently displayed video frame or media artwork is kept visible when the player is reset.- Corresponding method:
setKeepContentOnPlayerReset(boolean)
- Default:
false
- Corresponding method:
player_layout_id
- Specifies the id of the layout to be inflated. See below for more details.- Corresponding method: None
- Default:
R.layout.exo_player_view
controller_layout_id
- Specifies the id of the layout resource to be inflated by the childPlayerControlView
. See below for more details.- Corresponding method: None
- Default:
R.layout.exo_player_control_view
- All attributes that can be set on
PlayerControlView
andDefaultTimeBar
can also be set on a PlayerView, and will be propagated to the inflatedPlayerControlView
unless the layout is overridden to specify a customexo_controller
(see below).
Overriding drawables
The drawables used byPlayerControlView
(with its default layout file) can be overridden by drawables with the same names defined in your application. See thePlayerControlView
documentation for a list of drawables that can be overridden.Overriding the layout file
To customize the layout of PlayerView throughout your app, or just for certain configurations, you can defineexo_player_view.xml
layout files in your applicationres/layout*
directories. These layouts will override the one provided by the library, and will be inflated for use by PlayerView. The view identifies and binds its children by looking for the following ids:exo_content_frame
- A frame whose aspect ratio is resized based on the video or album art of the media being played, and the configuredresize_mode
. The video surface view is inflated into this frame as its first child.- Type:
AspectRatioFrameLayout
- Type:
exo_shutter
- A view that's made visible when video should be hidden. This view is typically an opaque view that covers the video surface, thereby obscuring it when visible. Obscuring the surface in this way also helps to prevent flicker at the start of playback whensurface_type="surface_view"
.- Type:
View
- Type:
exo_buffering
- A view that's made visible when the player is buffering. This view typically displays a buffering spinner or animation.- Type:
View
- Type:
exo_subtitles
- Displays subtitles.- Type:
SubtitleView
- Type:
exo_artwork
- Displays album art.- Type:
ImageView
- Type:
exo_error_message
- Displays an error message to the user if playback fails.- Type:
TextView
- Type:
exo_controller_placeholder
- A placeholder that's replaced with the inflatedPlayerControlView
. Ignored if anexo_controller
view exists.- Type:
View
- Type:
exo_controller
- An already inflatedPlayerControlView
. Allows use of a custom extension ofPlayerControlView
.PlayerControlView
andDefaultTimeBar
attributes set on the PlayerView will not be automatically propagated through to this instance. If a view exists with this id, anyexo_controller_placeholder
view will be ignored.- Type:
PlayerControlView
- Type:
exo_ad_overlay
- AFrameLayout
positioned on top of the player which is used to show ad UI (if applicable).- Type:
FrameLayout
- Type:
exo_overlay
- AFrameLayout
positioned on top of the player which the app can access viagetOverlayFrameLayout()
, provided for convenience.- Type:
FrameLayout
- Type:
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 ownexo_player_view.xml
is useful to customize the layout of PlayerView throughout your application. It's also possible to customize the layout for a single instance in a layout file. This is achieved by setting theplayer_layout_id
attribute on a PlayerView. This will cause the specified layout to be inflated instead ofexo_player_view.xml
for only the instance on which the attribute is set.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
PlayerView.ShowBuffering
Determines when the buffering view is shown.-
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
SHOW_BUFFERING_ALWAYS
The buffering view is always shown when the player is in thebuffering
state.static int
SHOW_BUFFERING_NEVER
The buffering view is never shown.static int
SHOW_BUFFERING_WHEN_PLAYING
-
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_CAPTURE_HINT_AUTO, SCROLL_CAPTURE_HINT_EXCLUDE, SCROLL_CAPTURE_HINT_EXCLUDE_DESCENDANTS, SCROLL_CAPTURE_HINT_INCLUDE, 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 PlayerView(Context context)
PlayerView(Context context, AttributeSet attrs)
PlayerView(Context context, AttributeSet attrs, int defStyleAttr)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
dispatchKeyEvent(KeyEvent event)
boolean
dispatchMediaKeyEvent(KeyEvent event)
Called to process media key events.List<AdOverlayInfo>
getAdOverlayInfos()
Returns a list ofAdOverlayInfo
instances describing views that are on top of the ad view group, but that are essential for controlling playback and should be excluded from ad viewability measurements.ViewGroup
getAdViewGroup()
Returns theViewGroup
on top of the player that will show any ad UI, ornull
if playing audio-only ads.boolean
getControllerAutoShow()
Returns whether the playback controls are automatically shown when playback starts, pauses, ends, or fails.boolean
getControllerHideOnTouch()
Returns whether the playback controls are hidden by touch events.int
getControllerShowTimeoutMs()
Returns the playback controls timeout.Drawable
getDefaultArtwork()
Returns the default artwork to display.FrameLayout
getOverlayFrameLayout()
Gets the overlayFrameLayout
, which can be populated with UI elements to show on top of the player.Player
getPlayer()
Returns the player currently set on this view, or null if no player is set.int
getResizeMode()
Returns theAspectRatioFrameLayout.ResizeMode
.SubtitleView
getSubtitleView()
Gets theSubtitleView
.boolean
getUseArtwork()
Returns whether artwork is displayed if present in the media.boolean
getUseController()
Returns whether the playback controls can be shown.View
getVideoSurfaceView()
Gets the view onto which video is rendered.void
hideController()
Hides the playback controls.boolean
isControllerVisible()
Returns whether the controller is currently visible.protected void
onContentAspectRatioChanged(AspectRatioFrameLayout contentFrame, float aspectRatio)
Called when there's a change in the desired aspect ratio of the content frame.void
onPause()
Should be called when the player is no longer visible to the user, if thesurface_type
extendsGLSurfaceView
.void
onResume()
Should be called when the player is visible to the user, if thesurface_type
extendsGLSurfaceView
.boolean
onTouchEvent(MotionEvent event)
boolean
onTrackballEvent(MotionEvent ev)
boolean
performClick()
void
setAspectRatioListener(AspectRatioFrameLayout.AspectRatioListener listener)
void
setControllerAutoShow(boolean controllerAutoShow)
Sets whether the playback controls are automatically shown when playback starts, pauses, ends, or fails.void
setControllerHideDuringAds(boolean controllerHideDuringAds)
Sets whether the playback controls are hidden when ads are playing.void
setControllerHideOnTouch(boolean controllerHideOnTouch)
Sets whether the playback controls are hidden by touch events.void
setControllerShowTimeoutMs(int controllerShowTimeoutMs)
Sets the playback controls timeout.void
setControllerVisibilityListener(PlayerControlView.VisibilityListener listener)
Sets thePlayerControlView.VisibilityListener
.void
setCustomErrorMessage(CharSequence message)
Sets a custom error message to be displayed by the view.void
setDefaultArtwork(Drawable defaultArtwork)
Sets the default artwork to display ifuseArtwork
istrue
and no artwork is present in the media.void
setErrorMessageProvider(ErrorMessageProvider<? super PlaybackException> errorMessageProvider)
Sets the optionalErrorMessageProvider
.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
setKeepContentOnPlayerReset(boolean keepContentOnPlayerReset)
Sets whether the currently displayed video frame or media artwork is kept visible when the player is reset.void
setPlayer(Player player)
Sets thePlayer
to use.void
setRepeatToggleModes(int repeatToggleModes)
Sets which repeat toggle modes are enabled.void
setResizeMode(int resizeMode)
Sets theAspectRatioFrameLayout.ResizeMode
.void
setShowBuffering(int showBuffering)
Sets whether a buffering spinner is displayed when the player is in the buffering state.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
setShutterBackgroundColor(int color)
Sets the background color of theexo_shutter
view.void
setUseArtwork(boolean useArtwork)
Sets whether artwork is displayed if present in the media.void
setUseController(boolean useController)
Sets whether the playback controls can be shown.void
setVisibility(int visibility)
void
showController()
Shows the playback controls.static void
switchTargetView(Player player, PlayerView oldPlayerView, PlayerView newPlayerView)
Switches the view targeted by a givenPlayer
.-
Methods inherited from class android.widget.FrameLayout
checkLayoutParams, generateDefaultLayoutParams, generateLayoutParams, generateLayoutParams, getAccessibilityClassName, getConsiderGoneChildrenWhenMeasuring, getMeasureAllChildren, onLayout, 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, dispatchCreateViewTranslationRequest, dispatchDisplayHint, dispatchDragEvent, dispatchDraw, dispatchDrawableHotspotChanged, dispatchFinishTemporaryDetach, dispatchFreezeSelfOnly, dispatchGenericFocusedEvent, dispatchGenericPointerEvent, dispatchHoverEvent, dispatchKeyEventPreIme, dispatchKeyShortcutEvent, dispatchPointerCaptureChanged, dispatchProvideAutofillStructure, dispatchProvideStructure, dispatchRestoreInstanceState, dispatchSaveInstanceState, dispatchScrollCaptureSearch, 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, onAttachedToWindow, onCreateDrawableState, onDescendantInvalidated, onDetachedFromWindow, 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, clearViewTranslationCallback, 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, generateDisplayHash, 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, getReceiveContentMimeTypes, getResources, getRevealOnFocusHint, getRight, getRightFadingEdgeStrength, getRightPaddingOffset, getRootSurfaceControl, getRootView, getRootWindowInsets, getRotation, getRotationX, getRotationY, getScaleX, getScaleY, getScrollBarDefaultDelayBeforeFade, getScrollBarFadeDuration, getScrollBarSize, getScrollBarStyle, getScrollCaptureHint, 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, getViewTranslationResponse, 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, onCreateViewTranslationRequest, onCreateVirtualViewTranslationRequests, 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, onReceiveContent, onRestoreInstanceState, onRtlPropertiesChanged, onSaveInstanceState, onScreenStateChanged, onScrollCaptureSearch, onScrollChanged, onSetAlpha, onSizeChanged, onStartTemporaryDetach, onViewTranslationResponse, onVirtualViewTranslationResponses, onVisibilityAggregated, onVisibilityChanged, onWindowFocusChanged, onWindowSystemUiVisibilityChanged, onWindowVisibilityChanged, overScrollBy, performAccessibilityAction, performContextClick, performContextClick, performHapticFeedback, performHapticFeedback, performLongClick, performLongClick, performReceiveContent, 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, setAllowClickWhenDisabled, 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, setOnReceiveContentListener, setOnScrollChangeListener, setOnSystemUiVisibilityChangeListener, setOnTouchListener, setOutlineAmbientShadowColor, setOutlineProvider, setOutlineSpotShadowColor, setOverScrollMode, setPadding, setPaddingRelative, setPivotX, setPivotY, setPointerIcon, setPressed, setRenderEffect, setRevealOnFocusHint, setRight, setRotation, setRotationX, setRotationY, setSaveEnabled, setSaveFromParentEnabled, setScaleX, setScaleY, setScreenReaderFocusable, setScrollBarDefaultDelayBeforeFade, setScrollBarFadeDuration, setScrollbarFadingEnabled, setScrollBarSize, setScrollBarStyle, setScrollCaptureCallback, setScrollCaptureHint, 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, setViewTranslationCallback, 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
-
SHOW_BUFFERING_NEVER
public static final int SHOW_BUFFERING_NEVER
The buffering view is never shown.- See Also:
- Constant Field Values
-
SHOW_BUFFERING_WHEN_PLAYING
public static final int SHOW_BUFFERING_WHEN_PLAYING
- See Also:
- Constant Field Values
-
SHOW_BUFFERING_ALWAYS
public static final int SHOW_BUFFERING_ALWAYS
The buffering view is always shown when the player is in thebuffering
state.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
PlayerView
public PlayerView(Context context)
-
PlayerView
public PlayerView(Context context, @Nullable AttributeSet attrs)
-
PlayerView
public PlayerView(Context context, @Nullable AttributeSet attrs, int defStyleAttr)
-
-
Method Detail
-
switchTargetView
public static void switchTargetView(Player player, @Nullable PlayerView oldPlayerView, @Nullable PlayerView newPlayerView)
Switches the view targeted by a givenPlayer
.- Parameters:
player
- The player whose target view is being switched.oldPlayerView
- The old view to detach from the player.newPlayerView
- The new view to attach to the player.
-
getPlayer
@Nullable public Player getPlayer()
Returns the player currently set on this view, or null if no player is set.
-
setPlayer
public void setPlayer(@Nullable Player player)
Sets thePlayer
to use.To transition a
Player
from targeting one view to another, it's recommended to useswitchTargetView(Player, PlayerView, PlayerView)
rather than this method. If you do wish to use this method directly, be sure to attach the player to the new view before callingsetPlayer(null)
to detach it from the old one. This ordering is significantly more efficient and may allow for more seamless transitions.- Parameters:
player
- ThePlayer
to use, ornull
to detach the current player. Only players which are accessed on the main thread are supported (player.getApplicationLooper() == Looper.getMainLooper()
).
-
setVisibility
public void setVisibility(int visibility)
- Overrides:
setVisibility
in classView
-
setResizeMode
public void setResizeMode(@ResizeMode int resizeMode)
Sets theAspectRatioFrameLayout.ResizeMode
.- Parameters:
resizeMode
- TheAspectRatioFrameLayout.ResizeMode
.
-
getResizeMode
@ResizeMode public int getResizeMode()
Returns theAspectRatioFrameLayout.ResizeMode
.
-
getUseArtwork
public boolean getUseArtwork()
Returns whether artwork is displayed if present in the media.
-
setUseArtwork
public void setUseArtwork(boolean useArtwork)
Sets whether artwork is displayed if present in the media.- Parameters:
useArtwork
- Whether artwork is displayed.
-
getDefaultArtwork
@Nullable public Drawable getDefaultArtwork()
Returns the default artwork to display.
-
setDefaultArtwork
public void setDefaultArtwork(@Nullable Drawable defaultArtwork)
Sets the default artwork to display ifuseArtwork
istrue
and no artwork is present in the media.- Parameters:
defaultArtwork
- the default artwork to display
-
getUseController
public boolean getUseController()
Returns whether the playback controls can be shown.
-
setUseController
public void setUseController(boolean useController)
Sets whether the playback controls can be shown. If set tofalse
the playback controls are never visible and are disconnected from the player.- Parameters:
useController
- Whether the playback controls can be shown.
-
setShutterBackgroundColor
public void setShutterBackgroundColor(int color)
Sets the background color of theexo_shutter
view.- Parameters:
color
- The background color.
-
setKeepContentOnPlayerReset
public void setKeepContentOnPlayerReset(boolean keepContentOnPlayerReset)
Sets whether the currently displayed video frame or media artwork is kept visible when the player is reset. A player reset is defined to mean the player being re-prepared with different media, the player transitioning to unprepared media or an empty list of media items, or the player being replaced or cleared by callingsetPlayer(Player)
.If enabled, the currently displayed video frame or media artwork will be kept visible until the player set on the view has been successfully prepared with new media and loaded enough of it to have determined the available tracks. Hence enabling this option allows transitioning from playing one piece of media to another, or from using one player instance to another, without clearing the view's content.
If disabled, the currently displayed video frame or media artwork will be hidden as soon as the player is reset. Note that the video frame is hidden by making
exo_shutter
visible. Hence the video frame will not be hidden if using a custom layout that omits this view.- Parameters:
keepContentOnPlayerReset
- Whether the currently displayed video frame or media artwork is kept visible when the player is reset.
-
setShowBuffering
public void setShowBuffering(@ShowBuffering int showBuffering)
Sets whether a buffering spinner is displayed when the player is in the buffering state. The buffering spinner is not displayed by default.- Parameters:
showBuffering
- The mode that defines when the buffering spinner is displayed. One ofSHOW_BUFFERING_NEVER
,SHOW_BUFFERING_WHEN_PLAYING
andSHOW_BUFFERING_ALWAYS
.
-
setErrorMessageProvider
public void setErrorMessageProvider(@Nullable ErrorMessageProvider<? super PlaybackException> errorMessageProvider)
Sets the optionalErrorMessageProvider
.- Parameters:
errorMessageProvider
- The error message provider.
-
setCustomErrorMessage
public void setCustomErrorMessage(@Nullable CharSequence message)
Sets a custom error message to be displayed by the view. The error message will be displayed permanently, unless it is cleared by passingnull
to this method.- Parameters:
message
- The message to display, ornull
to clear a previously set message.
-
dispatchKeyEvent
public boolean dispatchKeyEvent(KeyEvent event)
- Overrides:
dispatchKeyEvent
in classViewGroup
-
dispatchMediaKeyEvent
public boolean dispatchMediaKeyEvent(KeyEvent event)
Called to process media key events. AnyKeyEvent
can be passed but only media key events will be handled. Does nothing if playback controls are disabled.- Parameters:
event
- A key event.- Returns:
- Whether the key event was handled.
-
isControllerVisible
public boolean isControllerVisible()
Returns whether the controller is currently visible.
-
showController
public void showController()
Shows the playback controls. Does nothing if playback controls are disabled.The playback controls are automatically hidden during playback after {
getControllerShowTimeoutMs()
}. They are shown indefinitely when playback has not started yet, is paused, has ended or failed.
-
hideController
public void hideController()
Hides the playback controls. Does nothing if playback controls are disabled.
-
getControllerShowTimeoutMs
public int getControllerShowTimeoutMs()
Returns the playback controls timeout. The playback controls are automatically hidden after this duration of time has elapsed without user input and with playback or buffering in progress.- Returns:
- The timeout in milliseconds. A non-positive value will cause the controller to remain visible indefinitely.
-
setControllerShowTimeoutMs
public void setControllerShowTimeoutMs(int controllerShowTimeoutMs)
Sets the playback controls timeout. The playback controls are automatically hidden after this duration of time has elapsed without user input and with playback or buffering in progress.- Parameters:
controllerShowTimeoutMs
- The timeout in milliseconds. A non-positive value will cause the controller to remain visible indefinitely.
-
getControllerHideOnTouch
public boolean getControllerHideOnTouch()
Returns whether the playback controls are hidden by touch events.
-
setControllerHideOnTouch
public void setControllerHideOnTouch(boolean controllerHideOnTouch)
Sets whether the playback controls are hidden by touch events.- Parameters:
controllerHideOnTouch
- Whether the playback controls are hidden by touch events.
-
getControllerAutoShow
public boolean getControllerAutoShow()
Returns whether the playback controls are automatically shown when playback starts, pauses, ends, or fails. If set to false, the playback controls can be manually operated withshowController()
andhideController()
.
-
setControllerAutoShow
public void setControllerAutoShow(boolean controllerAutoShow)
Sets whether the playback controls are automatically shown when playback starts, pauses, ends, or fails. If set to false, the playback controls can be manually operated withshowController()
andhideController()
.- Parameters:
controllerAutoShow
- Whether the playback controls are allowed to show automatically.
-
setControllerHideDuringAds
public void setControllerHideDuringAds(boolean controllerHideDuringAds)
Sets whether the playback controls are hidden when ads are playing. Controls are always shown during ads if they are enabled and the player is paused.- Parameters:
controllerHideDuringAds
- Whether the playback controls are hidden when ads are playing.
-
setControllerVisibilityListener
public void setControllerVisibilityListener(@Nullable PlayerControlView.VisibilityListener listener)
Sets thePlayerControlView.VisibilityListener
.- Parameters:
listener
- The listener to be notified about visibility changes, or null to remove the current listener.
-
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.
-
setRepeatToggleModes
public void setRepeatToggleModes(@RepeatToggleModes int repeatToggleModes)
Sets which repeat toggle modes are enabled.- Parameters:
repeatToggleModes
- A set ofRepeatModeUtil.RepeatToggleModes
.
-
setShowShuffleButton
public void setShowShuffleButton(boolean showShuffleButton)
Sets whether the shuffle button is shown.- Parameters:
showShuffleButton
- Whether the shuffle button is shown.
-
setShowMultiWindowTimeBar
public void setShowMultiWindowTimeBar(boolean showMultiWindowTimeBar)
Sets whether the time bar should show all windows, as opposed to just the current one.- Parameters:
showMultiWindowTimeBar
- Whether to 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, ornull
to show no extra ad markers.extraPlayedAdGroups
- Whether each ad has been played, ornull
to show no extra ad markers.
-
setAspectRatioListener
public void setAspectRatioListener(@Nullable AspectRatioFrameLayout.AspectRatioListener listener)
- Parameters:
listener
- The listener to be notified about aspect ratios changes of the video content or the content frame.
-
getVideoSurfaceView
@Nullable public View getVideoSurfaceView()
Gets the view onto which video is rendered. This is a:SurfaceView
by default, or if thesurface_type
attribute is set tosurface_view
.TextureView
ifsurface_type
istexture_view
.SphericalGLSurfaceView
ifsurface_type
isspherical_gl_surface_view
.VideoDecoderGLSurfaceView
ifsurface_type
isvideo_decoder_gl_surface_view
.null
ifsurface_type
isnone
.
- Returns:
- The
SurfaceView
,TextureView
,SphericalGLSurfaceView
,VideoDecoderGLSurfaceView
ornull
.
-
getOverlayFrameLayout
@Nullable public FrameLayout getOverlayFrameLayout()
Gets the overlayFrameLayout
, which can be populated with UI elements to show on top of the player.- Returns:
- The overlay
FrameLayout
, ornull
if the layout has been customized and the overlay is not present.
-
getSubtitleView
@Nullable public SubtitleView getSubtitleView()
Gets theSubtitleView
.- Returns:
- The
SubtitleView
, ornull
if the layout has been customized and the subtitle view is not present.
-
onTouchEvent
public boolean onTouchEvent(MotionEvent event)
- Overrides:
onTouchEvent
in classView
-
performClick
public boolean performClick()
- Overrides:
performClick
in classView
-
onTrackballEvent
public boolean onTrackballEvent(MotionEvent ev)
- Overrides:
onTrackballEvent
in classView
-
onResume
public void onResume()
Should be called when the player is visible to the user, if thesurface_type
extendsGLSurfaceView
. It is the counterpart toonPause()
.This method should typically be called in
Activity.onStart()
, orActivity.onResume()
for API versions <= 23.
-
onPause
public void onPause()
Should be called when the player is no longer visible to the user, if thesurface_type
extendsGLSurfaceView
. It is the counterpart toonResume()
.This method should typically be called in
Activity.onStop()
, orActivity.onPause()
for API versions <= 23.
-
onContentAspectRatioChanged
protected void onContentAspectRatioChanged(@Nullable AspectRatioFrameLayout contentFrame, float aspectRatio)
Called when there's a change in the desired aspect ratio of the content frame. The default implementation sets the aspect ratio of the content frame to the specified value.- Parameters:
contentFrame
- The content frame, ornull
.aspectRatio
- The aspect ratio to apply.
-
getAdViewGroup
public ViewGroup getAdViewGroup()
Description copied from interface:AdViewProvider
Returns theViewGroup
on top of the player that will show any ad UI, ornull
if playing audio-only ads. Any views on top of the returned view group must be described byAdOverlayInfos
returned byAdViewProvider.getAdOverlayInfos()
, for accurate viewability measurement.- Specified by:
getAdViewGroup
in interfaceAdViewProvider
-
getAdOverlayInfos
public List<AdOverlayInfo> getAdOverlayInfos()
Description copied from interface:AdViewProvider
Returns a list ofAdOverlayInfo
instances describing views that are on top of the ad view group, but that are essential for controlling playback and should be excluded from ad viewability measurements.Each view must be either a fully transparent overlay (for capturing touch events), or a small piece of transient UI that is essential to the user experience of playback (such as a button to pause/resume playback or a transient full-screen or cast button). For more information see the documentation for your ads loader.
- Specified by:
getAdOverlayInfos
in interfaceAdViewProvider
-
-