Drawable.Callback
, AccessibilityEventSource
, KeyEvent.Callback
, ViewManager
, ViewParent
, AdsLoader.AdViewProvider
public class StyledPlayerView extends FrameLayout implements AdsLoader.AdViewProvider
Player
media playbacks. It displays video, subtitles and album art
during playback, and displays playback controls using a StyledPlayerControlView
.
A StyledPlayerView 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.
use_artwork
- Whether artwork is used if available in audio streams.
setUseArtwork(boolean)
true
default_artwork
- Default artwork to use if no artwork available in audio
streams.
setDefaultArtwork(Drawable)
null
use_controller
- Whether the playback controls can be shown.
setUseController(boolean)
true
hide_on_touch
- Whether the playback controls are hidden by touch events.
setControllerHideOnTouch(boolean)
true
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 with showController()
and hideController()
.
setControllerAutoShow(boolean)
true
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.
setControllerHideDuringAds(boolean)
true
show_buffering
- Whether the buffering spinner is displayed when the player
is buffering. Valid values are never
, when_playing
and always
.
setShowBuffering(int)
never
resize_mode
- Controls how video and album art is resized within the view.
Valid values are fit
, fixed_width
, fixed_height
, fill
and
zoom
.
setResizeMode(int)
fit
surface_type
- The type of surface view used for video playbacks. Valid
values are surface_view
, texture_view
, spherical_gl_surface_view
,
video_decoder_gl_surface_view
and none
. Using none
is recommended
for audio only applications, since creating the surface can be expensive. Using
surface_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.
surface_view
use_sensor_rotation
- Whether to use the orientation sensor for rotation
during spherical playbacks (if available).
setUseSensorRotation(boolean)
true
shutter_background_color
- The background color of the exo_shutter
view.
setShutterBackgroundColor(int)
unset
keep_content_on_player_reset
- Whether the currently displayed video frame
or media artwork is kept visible when the player is reset.
setKeepContentOnPlayerReset(boolean)
false
player_layout_id
- Specifies the id of the layout to be inflated. See below
for more details.
R.layout.exo_styled_player_view
controller_layout_id
- Specifies the id of the layout resource to be
inflated by the child StyledPlayerControlView
. See below for more details.
R.layout.exo_styled_player_control_view
StyledPlayerControlView
and DefaultTimeBar
can also be set on a StyledPlayerView, and will be propagated to the
inflated StyledPlayerControlView
unless the layout is overridden to specify a
custom exo_controller
(see below).
StyledPlayerControlView
(with its default layout file) can be
overridden by drawables with the same names defined in your application. See the StyledPlayerControlView
documentation for a list of drawables that can be overridden.
exo_styled_player_view.xml
layout files in your
application res/layout*
directories. These layouts will override the one provided by the
ExoPlayer library, and will be inflated for use by StyledPlayerView. 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 configured resize_mode
. The video
surface view is inflated into this frame as its first child.
AspectRatioFrameLayout
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 when surface_type="surface_view"
.
View
exo_buffering
- A view that's made visible when the player is buffering.
This view typically displays a buffering spinner or animation.
View
exo_subtitles
- Displays subtitles.
SubtitleView
exo_artwork
- Displays album art.
ImageView
exo_error_message
- Displays an error message to the user if playback fails.
TextView
exo_controller_placeholder
- A placeholder that's replaced with the inflated
StyledPlayerControlView
. Ignored if an exo_controller
view exists.
View
exo_controller
- An already inflated StyledPlayerControlView
. Allows
use of a custom extension of StyledPlayerControlView
. StyledPlayerControlView
and DefaultTimeBar
attributes set on the StyledPlayerView
will not be automatically propagated through to this instance. If a view exists with this
id, any exo_controller_placeholder
view will be ignored.
StyledPlayerControlView
exo_ad_overlay
- A FrameLayout
positioned on top of the player which
is used to show ad UI (if applicable).
FrameLayout
exo_overlay
- A FrameLayout
positioned on top of the player which
the app can access via getOverlayFrameLayout()
, provided for convenience.
FrameLayout
All child views are optional and so can be omitted if not required, however where defined they must be of the expected type.
exo_styled_player_view.xml
is useful to customize the layout of
StyledPlayerView 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 player_layout_id
attribute on a StyledPlayerView. This will cause the specified layout to be inflated instead of
exo_styled_player_view.xml
for only the instance on which the attribute is set.Modifier and Type | Class | Description |
---|---|---|
static interface |
StyledPlayerView.ShowBuffering |
Determines when the buffering view is shown.
|
FrameLayout.LayoutParams
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
ViewGroup.MarginLayoutParams, ViewGroup.OnHierarchyChangeListener
Modifier and Type | Field | Description |
---|---|---|
static int |
SHOW_BUFFERING_ALWAYS |
The buffering view is always shown when the player is in the
buffering state. |
static int |
SHOW_BUFFERING_NEVER |
The buffering view is never shown.
|
static int |
SHOW_BUFFERING_WHEN_PLAYING |
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, 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
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
Constructor | Description |
---|---|
StyledPlayerView(Context context) |
|
StyledPlayerView(Context context,
AttributeSet attrs) |
|
StyledPlayerView(Context context,
AttributeSet attrs,
int defStyleAttr) |
Modifier and Type | Method | Description |
---|---|---|
boolean |
dispatchKeyEvent(KeyEvent event) |
|
boolean |
dispatchMediaKeyEvent(KeyEvent event) |
Called to process media key events.
|
List<AdsLoader.OverlayInfo> |
getAdOverlayInfos() |
Returns a list of
AdsLoader.OverlayInfo 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 by the AdsLoader (if it supports this). |
ViewGroup |
getAdViewGroup() |
Returns the
ViewGroup on top of the player that will show any ad UI, or null
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 overlay
FrameLayout , 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 the
AspectRatioFrameLayout.ResizeMode . |
SubtitleView |
getSubtitleView() |
Gets the
SubtitleView . |
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 |
isControllerFullyVisible() |
Returns whether the controller is currently fully visible.
|
protected void |
onContentAspectRatioChanged(float contentAspectRatio,
AspectRatioFrameLayout contentFrame,
View contentView) |
Called when there's a change in the aspect ratio of the content being displayed.
|
void |
onPause() |
Should be called when the player is no longer visible to the user and if
surface_type
is spherical_gl_surface_view . |
void |
onResume() |
Should be called when the player is visible to the user and if
surface_type is
spherical_gl_surface_view . |
boolean |
onTouchEvent(MotionEvent event) |
|
boolean |
onTrackballEvent(MotionEvent ev) |
|
boolean |
performClick() |
|
void |
setAspectRatioListener(AspectRatioFrameLayout.AspectRatioListener listener) |
|
void |
setControlDispatcher(ControlDispatcher controlDispatcher) |
Sets the
ControlDispatcher . |
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 |
setControllerOnFullScreenModeChangedListener(StyledPlayerControlView.OnFullScreenModeChangedListener listener) |
|
void |
setControllerShowTimeoutMs(int controllerShowTimeoutMs) |
Sets the playback controls timeout.
|
void |
setControllerVisibilityListener(StyledPlayerControlView.VisibilityListener listener) |
|
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 if
useArtwork is true and no artwork is
present in the media. |
void |
setErrorMessageProvider(ErrorMessageProvider<? super ExoPlaybackException> errorMessageProvider) |
Sets the optional
ErrorMessageProvider . |
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 |
setPlaybackPreparer(PlaybackPreparer playbackPreparer) |
Deprecated.
Use
setControlDispatcher(ControlDispatcher) instead. |
void |
setPlayer(Player player) |
Set the
Player to use. |
void |
setRepeatToggleModes(int repeatToggleModes) |
Sets which repeat toggle modes are enabled.
|
void |
setResizeMode(int resizeMode) |
Sets the
AspectRatioFrameLayout.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 |
setShowSubtitleButton(boolean showSubtitleButton) |
Sets whether the subtitle button is shown.
|
void |
setShowVrButton(boolean showVrButton) |
Sets whether the vr button is shown.
|
void |
setShutterBackgroundColor(int color) |
Sets the background color of the
exo_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 |
setUseSensorRotation(boolean useSensorRotation) |
Sets whether to use the orientation sensor for rotation during spherical playbacks (if
available)
|
void |
setVisibility(int visibility) |
|
void |
showController() |
Shows the playback controls.
|
static void |
switchTargetView(Player player,
StyledPlayerView oldPlayerView,
StyledPlayerView newPlayerView) |
Switches the view targeted by a given
Player . |
getAdOverlayViews
checkLayoutParams, generateDefaultLayoutParams, generateLayoutParams, generateLayoutParams, getAccessibilityClassName, getConsiderGoneChildrenWhenMeasuring, getMeasureAllChildren, onLayout, onMeasure, setForegroundGravity, setMeasureAllChildren, shouldDelayChildPressedState
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
addExtraDataToAccessibilityNodeInfo, 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, 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, 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, getWindowSystemUiVisibility, getWindowToken, getWindowVisibility, getWindowVisibleDisplayFrame, getX, getY, getZ, hasExplicitFocusable, hasFocusable, hasNestedScrollingParent, hasOnClickListeners, 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, isInEditMode, isInLayout, isInTouchMode, isKeyboardNavigationCluster, isLaidOut, isLayoutDirectionResolved, isLayoutRequested, isLongClickable, isNestedScrollingEnabled, isOpaque, isPaddingOffsetRequired, isPaddingRelative, isPivotSet, isPressed, isSaveEnabled, isSaveFromParentEnabled, isScreenReaderFocusable, isScrollbarFadingEnabled, isScrollContainer, isSelected, 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, onProvideStructure, onProvideVirtualStructure, onRestoreInstanceState, onRtlPropertiesChanged, onSaveInstanceState, onScreenStateChanged, onScrollChanged, onSetAlpha, onSizeChanged, onStartTemporaryDetach, onVisibilityAggregated, onVisibilityChanged, onWindowFocusChanged, onWindowSystemUiVisibilityChanged, onWindowVisibilityChanged, overScrollBy, performAccessibilityAction, 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, 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, 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, setStateListAnimator, setSystemGestureExclusionRects, setSystemUiVisibility, setTag, setTag, setTextAlignment, setTextDirection, setTooltipText, setTop, setTouchDelegate, setTransitionAlpha, setTransitionName, setTransitionVisibility, setTranslationX, setTranslationY, setTranslationZ, setVerticalFadingEdgeEnabled, setVerticalScrollBarEnabled, setVerticalScrollbarPosition, setVerticalScrollbarThumbDrawable, setVerticalScrollbarTrackDrawable, setWillNotCacheDrawing, setWillNotDraw, setX, setY, setZ, showContextMenu, showContextMenu, startActionMode, startActionMode, startAnimation, startDrag, startDragAndDrop, startNestedScroll, stopNestedScroll, toString, transformMatrixToGlobal, transformMatrixToLocal, unscheduleDrawable, unscheduleDrawable, updateDragShadow, verifyDrawable, willNotCacheDrawing, willNotDraw
addChildrenForAccessibility, 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, 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, showContextMenuForChild, showContextMenuForChild, startActionModeForChild, startActionModeForChild, startLayoutAnimation, startViewTransition, suppressLayout, updateViewLayout
canResolveLayoutDirection, canResolveTextAlignment, canResolveTextDirection, createContextMenu, getLayoutDirection, getParent, getParentForAccessibility, getTextAlignment, getTextDirection, isLayoutDirectionResolved, isLayoutRequested, isTextAlignmentResolved, isTextDirectionResolved, keyboardNavigationClusterSearch, requestFitSystemWindows, requestLayout
public static final int SHOW_BUFFERING_NEVER
public static final int SHOW_BUFFERING_WHEN_PLAYING
public static final int SHOW_BUFFERING_ALWAYS
buffering
state.public StyledPlayerView(Context context)
public StyledPlayerView(Context context, @Nullable AttributeSet attrs)
public StyledPlayerView(Context context, @Nullable AttributeSet attrs, int defStyleAttr)
public static void switchTargetView(Player player, @Nullable StyledPlayerView oldPlayerView, @Nullable StyledPlayerView newPlayerView)
Player
.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.@Nullable public Player getPlayer()
public void setPlayer(@Nullable Player player)
Player
to use.
To transition a Player
from targeting one view to another, it's recommended to use
switchTargetView(Player, StyledPlayerView, StyledPlayerView)
rather than this method.
If you do wish to use this method directly, be sure to attach the player to the new view
before calling setPlayer(null)
to detach it from the old one. This ordering is
significantly more efficient and may allow for more seamless transitions.
player
- The Player
to use, or null
to detach the current player. Only
players which are accessed on the main thread are supported (
player.getApplicationLooper() == Looper.getMainLooper()
).public void setVisibility(int visibility)
setVisibility
in class View
public void setResizeMode(@ResizeMode int resizeMode)
AspectRatioFrameLayout.ResizeMode
.resizeMode
- The AspectRatioFrameLayout.ResizeMode
.@ResizeMode public int getResizeMode()
AspectRatioFrameLayout.ResizeMode
.public boolean getUseArtwork()
public void setUseArtwork(boolean useArtwork)
useArtwork
- Whether artwork is displayed.@Nullable public Drawable getDefaultArtwork()
public void setDefaultArtwork(@Nullable Drawable defaultArtwork)
useArtwork
is true
and no artwork is
present in the media.defaultArtwork
- the default artwork to displaypublic boolean getUseController()
public void setUseController(boolean useController)
false
the playback controls
are never visible and are disconnected from the player.useController
- Whether the playback controls can be shown.public void setShutterBackgroundColor(int color)
exo_shutter
view.color
- The background color.public void setKeepContentOnPlayerReset(boolean keepContentOnPlayerReset)
Player.stop(boolean)
being called
with reset=true
, or the player being replaced or cleared by calling setPlayer(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.
keepContentOnPlayerReset
- Whether the currently displayed video frame or media artwork is
kept visible when the player is reset.public void setUseSensorRotation(boolean useSensorRotation)
useSensorRotation
- Whether to use the orientation sensor for rotation during spherical
playbacks.public void setShowBuffering(@ShowBuffering int showBuffering)
showBuffering
- The mode that defines when the buffering spinner is displayed. One of
SHOW_BUFFERING_NEVER
, SHOW_BUFFERING_WHEN_PLAYING
and SHOW_BUFFERING_ALWAYS
.public void setErrorMessageProvider(@Nullable ErrorMessageProvider<? super ExoPlaybackException> errorMessageProvider)
ErrorMessageProvider
.errorMessageProvider
- The error message provider.public void setCustomErrorMessage(@Nullable CharSequence message)
null
to this method.message
- The message to display, or null
to clear a previously set message.public boolean dispatchKeyEvent(KeyEvent event)
dispatchKeyEvent
in class ViewGroup
public boolean dispatchMediaKeyEvent(KeyEvent event)
KeyEvent
can be passed but only media key
events will be handled. Does nothing if playback controls are disabled.event
- A key event.public boolean isControllerFullyVisible()
public void showController()
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.
public void hideController()
public int getControllerShowTimeoutMs()
public void setControllerShowTimeoutMs(int controllerShowTimeoutMs)
controllerShowTimeoutMs
- The timeout in milliseconds. A non-positive value will cause the
controller to remain visible indefinitely.public boolean getControllerHideOnTouch()
public void setControllerHideOnTouch(boolean controllerHideOnTouch)
controllerHideOnTouch
- Whether the playback controls are hidden by touch events.public boolean getControllerAutoShow()
showController()
and hideController()
.public void setControllerAutoShow(boolean controllerAutoShow)
showController()
and hideController()
.controllerAutoShow
- Whether the playback controls are allowed to show automatically.public void setControllerHideDuringAds(boolean controllerHideDuringAds)
controllerHideDuringAds
- Whether the playback controls are hidden when ads are playing.public void setControllerVisibilityListener(@Nullable StyledPlayerControlView.VisibilityListener listener)
listener
- The listener to be notified about visibility changes, or null to remove the
current listener.public void setControllerOnFullScreenModeChangedListener(@Nullable StyledPlayerControlView.OnFullScreenModeChangedListener listener)
listener
- The listener to be notified when the fullscreen button is clicked, or null to
remove the current listener and hide the fullscreen button.@Deprecated public void setPlaybackPreparer(@Nullable PlaybackPreparer playbackPreparer)
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)
.public void setControlDispatcher(ControlDispatcher controlDispatcher)
ControlDispatcher
.controlDispatcher
- The ControlDispatcher
.public void setShowRewindButton(boolean showRewindButton)
showRewindButton
- Whether the rewind button is shown.public void setShowFastForwardButton(boolean showFastForwardButton)
showFastForwardButton
- Whether the fast forward button is shown.public void setShowPreviousButton(boolean showPreviousButton)
showPreviousButton
- Whether the previous button is shown.public void setShowNextButton(boolean showNextButton)
showNextButton
- Whether the next button is shown.public void setRepeatToggleModes(@RepeatToggleModes int repeatToggleModes)
repeatToggleModes
- A set of RepeatModeUtil.RepeatToggleModes
.public void setShowShuffleButton(boolean showShuffleButton)
showShuffleButton
- Whether the shuffle button is shown.public void setShowSubtitleButton(boolean showSubtitleButton)
showSubtitleButton
- Whether the subtitle button is shown.public void setShowVrButton(boolean showVrButton)
showVrButton
- Whether the vr button is shown.public void setShowMultiWindowTimeBar(boolean showMultiWindowTimeBar)
showMultiWindowTimeBar
- Whether to show all windows.public void setExtraAdGroupMarkers(@Nullable long[] extraAdGroupTimesMs, @Nullable boolean[] extraPlayedAdGroups)
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, or null
to show no extra ad
markers.public void setAspectRatioListener(@Nullable AspectRatioFrameLayout.AspectRatioListener listener)
listener
- The listener to be notified about aspect ratios changes of the video content or
the content frame.@Nullable public View getVideoSurfaceView()
SurfaceView
by default, or if the surface_type
attribute is set to
surface_view
.
TextureView
if surface_type
is texture_view
.
SphericalGLSurfaceView
if surface_type
is
spherical_gl_surface_view
.
VideoDecoderGLSurfaceView
if surface_type
is
video_decoder_gl_surface_view
.
null
if surface_type
is none
.
SurfaceView
, TextureView
, SphericalGLSurfaceView
, VideoDecoderGLSurfaceView
or null
.@Nullable public FrameLayout getOverlayFrameLayout()
FrameLayout
, which can be populated with UI elements to show on top of
the player.FrameLayout
, or null
if the layout has been customized and
the overlay is not present.@Nullable public SubtitleView getSubtitleView()
SubtitleView
.SubtitleView
, or null
if the layout has been customized and the
subtitle view is not present.public boolean onTouchEvent(MotionEvent event)
onTouchEvent
in class View
public boolean performClick()
performClick
in class View
public boolean onTrackballEvent(MotionEvent ev)
onTrackballEvent
in class View
public void onResume()
surface_type
is
spherical_gl_surface_view
. It is the counterpart to onPause()
.
This method should typically be called in Activity.onStart()
, or
Activity.onResume()
for API versions <= 23.
public void onPause()
surface_type
is spherical_gl_surface_view
. It is the counterpart to onResume()
.
This method should typically be called in Activity.onStop()
, or
Activity.onPause()
for API versions <= 23.
protected void onContentAspectRatioChanged(float contentAspectRatio, @Nullable AspectRatioFrameLayout contentFrame, @Nullable View contentView)
SphericalGLSurfaceView
in which case the frame's aspect ratio is
cleared.contentAspectRatio
- The aspect ratio of the content.contentFrame
- The content frame, or null
.contentView
- The view that holds the content being displayed, or null
.public ViewGroup getAdViewGroup()
AdsLoader.AdViewProvider
ViewGroup
on top of the player that will show any ad UI, or null
if playing audio-only ads. Any views on top of the returned view group must be described by
OverlayInfos
returned by AdsLoader.AdViewProvider.getAdOverlayInfos()
, for accurate
viewability measurement.getAdViewGroup
in interface AdsLoader.AdViewProvider
public List<AdsLoader.OverlayInfo> getAdOverlayInfos()
AdsLoader.AdViewProvider
AdsLoader.OverlayInfo
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 by the AdsLoader
(if it supports this).
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.
getAdOverlayInfos
in interface AdsLoader.AdViewProvider