public class PlayerView
extends android.widget.FrameLayout
Player media playbacks. It displays video, subtitles and album art
during playback, and displays playback controls using a PlayerControlView.
A PlayerView can be customized by setting attributes (or calling corresponding methods), overriding the view's layout file or by specifying a custom view layout file, as outlined below.
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(Bitmap)
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.
setShowBuffering(boolean)
false
resize_mode - Controls how video and album art is resized within the view.
Valid values are fit, fixed_width, fixed_height and fill.
setResizeMode(int)
fit
surface_type - The type of surface view used for video playbacks. Valid
values are surface_view, texture_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
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.id.exo_player_view
controller_layout_id - Specifies the id of the layout resource to be
inflated by the child PlayerControlView. See below for more details.
R.id.exo_player_control_view
PlayerControlView can also be set on a
PlayerView, and will be propagated to the inflated PlayerControlView unless the
layout is overridden to specify a custom exo_controller (see below).
exo_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 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 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 view, thereby obscuring it
when visible.
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
PlayerControlView. Ignored if an exo_controller view exists.
View
exo_controller - An already inflated PlayerControlView. Allows use
of a custom extension of PlayerControlView. Note that attributes such as rewind_increment will not be automatically propagated through to this instance. If a view
exists with this id, any exo_controller_placeholder view will be ignored.
PlayerControlView
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_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 the player_layout_id attribute on a
PlayerView. This will cause the specified layout to be inflated instead of exo_player_view.xml for only the instance on which the attribute is set.android.widget.FrameLayout.LayoutParamsandroid.view.ViewGroup.MarginLayoutParams, android.view.ViewGroup.OnHierarchyChangeListenerandroid.view.View.AccessibilityDelegate, android.view.View.BaseSavedState, android.view.View.DragShadowBuilder, android.view.View.MeasureSpec, android.view.View.OnApplyWindowInsetsListener, android.view.View.OnAttachStateChangeListener, android.view.View.OnCapturedPointerListener, android.view.View.OnClickListener, android.view.View.OnContextClickListener, android.view.View.OnCreateContextMenuListener, android.view.View.OnDragListener, android.view.View.OnFocusChangeListener, android.view.View.OnGenericMotionListener, android.view.View.OnHoverListener, android.view.View.OnKeyListener, android.view.View.OnLayoutChangeListener, android.view.View.OnLongClickListener, android.view.View.OnScrollChangeListener, android.view.View.OnSystemUiVisibilityChangeListener, android.view.View.OnTouchListenerCLIP_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_CACHEACCESSIBILITY_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| Constructor and Description |
|---|
PlayerView(android.content.Context context) |
PlayerView(android.content.Context context,
android.util.AttributeSet attrs) |
PlayerView(android.content.Context context,
android.util.AttributeSet attrs,
int defStyleAttr) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
dispatchKeyEvent(android.view.KeyEvent event) |
boolean |
dispatchMediaKeyEvent(android.view.KeyEvent event)
Called to process media key events.
|
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.
|
android.graphics.Bitmap |
getDefaultArtwork()
Returns the default artwork to display.
|
android.widget.FrameLayout |
getOverlayFrameLayout()
Gets the overlay
FrameLayout, which can be populated with UI elements to show on top of
the player. |
com.google.android.exoplayer2.Player |
getPlayer()
Returns the player currently set on this view, or null if no player is set.
|
int |
getResizeMode()
Returns the resize mode.
|
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.
|
android.view.View |
getVideoSurfaceView()
Gets the view onto which video is rendered.
|
void |
hideController()
Hides the playback controls.
|
boolean |
onTouchEvent(android.view.MotionEvent ev) |
boolean |
onTrackballEvent(android.view.MotionEvent ev) |
void |
setAspectRatioListener(AspectRatioFrameLayout.AspectRatioListener listener)
|
void |
setControlDispatcher(com.google.android.exoplayer2.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 |
setControllerShowTimeoutMs(int controllerShowTimeoutMs)
Sets the playback controls timeout.
|
void |
setControllerVisibilityListener(PlayerControlView.VisibilityListener listener)
Set the
PlayerControlView.VisibilityListener. |
void |
setCustomErrorMessage(java.lang.CharSequence message)
Sets a custom error message to be displayed by the view.
|
void |
setDefaultArtwork(android.graphics.Bitmap defaultArtwork)
Sets the default artwork to display if
useArtwork is true and no artwork is
present in the media. |
void |
setErrorMessageProvider(com.google.android.exoplayer2.util.ErrorMessageProvider<? super com.google.android.exoplayer2.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 |
setFastForwardIncrementMs(int fastForwardMs)
Sets the fast forward increment in milliseconds.
|
void |
setKeepContentOnPlayerReset(boolean keepContentOnPlayerReset)
Sets whether the currently displayed video frame or media artwork is kept visible when the
player is reset.
|
void |
setPlaybackPreparer(com.google.android.exoplayer2.PlaybackPreparer playbackPreparer)
Sets the
PlaybackPreparer. |
void |
setPlayer(com.google.android.exoplayer2.Player player)
Set the
Player to use. |
void |
setRepeatToggleModes(int repeatToggleModes)
Sets which repeat toggle modes are enabled.
|
void |
setResizeMode(int resizeMode)
Sets the resize mode.
|
void |
setRewindIncrementMs(int rewindMs)
Sets the rewind increment in milliseconds.
|
void |
setShowBuffering(boolean showBuffering)
Sets whether a buffering spinner is displayed when the player is in the buffering state.
|
void |
setShowMultiWindowTimeBar(boolean showMultiWindowTimeBar)
Sets whether the time bar should show all windows, as opposed to just the current one.
|
void |
setShowShuffleButton(boolean showShuffleButton)
Sets whether the shuffle 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 |
setVisibility(int visibility) |
void |
showController()
Shows the playback controls.
|
static void |
switchTargetView(com.google.android.exoplayer2.Player player,
PlayerView oldPlayerView,
PlayerView newPlayerView)
Switches the view targeted by a given
Player. |
checkLayoutParams, generateDefaultLayoutParams, generateLayoutParams, generateLayoutParams, getAccessibilityClassName, getConsiderGoneChildrenWhenMeasuring, getMeasureAllChildren, onLayout, onMeasure, setForegroundGravity, setMeasureAllChildren, shouldDelayChildPressedStateaddChildrenForAccessibility, 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, dispatchFreezeSelfOnly, dispatchGenericFocusedEvent, dispatchGenericPointerEvent, dispatchHoverEvent, dispatchKeyEventPreIme, dispatchKeyShortcutEvent, dispatchPointerCaptureChanged, dispatchProvideAutofillStructure, dispatchProvideStructure, dispatchRestoreInstanceState, dispatchSaveInstanceState, dispatchSetActivated, dispatchSetPressed, dispatchSetSelected, dispatchSystemUiVisibilityChanged, dispatchThawSelfOnly, dispatchTouchEvent, dispatchTrackballEvent, dispatchUnhandledMove, dispatchVisibilityChanged, dispatchWindowFocusChanged, dispatchWindowSystemUiVisiblityChanged, dispatchWindowVisibilityChanged, drawableStateChanged, drawChild, endViewTransition, findFocus, findViewsWithText, focusableViewAvailable, focusSearch, gatherTransparentRegion, getChildAt, getChildCount, 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, 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, updateViewLayoutaddExtraDataToAccessibilityNodeInfo, addFocusables, addOnAttachStateChangeListener, addOnLayoutChangeListener, 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, dispatchFinishTemporaryDetach, dispatchGenericMotionEvent, dispatchNestedFling, dispatchNestedPreFling, dispatchNestedPrePerformAccessibilityAction, dispatchNestedPreScroll, dispatchNestedScroll, dispatchPopulateAccessibilityEvent, dispatchStartTemporaryDetach, draw, drawableHotspotChanged, findViewById, findViewWithTag, fitSystemWindows, focusSearch, forceHasOverlappingRendering, forceLayout, generateViewId, getAccessibilityLiveRegion, getAccessibilityNodeProvider, getAccessibilityTraversalAfter, getAccessibilityTraversalBefore, getAlpha, getAnimation, getApplicationWindowToken, getAutofillHints, getAutofillId, getAutofillType, getAutofillValue, getBackground, getBackgroundTintList, getBackgroundTintMode, getBaseline, getBottom, getBottomFadingEdgeStrength, getBottomPaddingOffset, getCameraDistance, getClipBounds, getClipBounds, getClipToOutline, getContentDescription, getContext, getContextMenuInfo, getDefaultFocusHighlightEnabled, getDefaultSize, getDisplay, getDrawableState, getDrawingCache, getDrawingCache, getDrawingCacheBackgroundColor, getDrawingCacheQuality, getDrawingRect, getDrawingTime, getElevation, getFilterTouchesWhenObscured, getFitsSystemWindows, getFocusable, getFocusables, getFocusedRect, getForeground, getForegroundGravity, getForegroundTintList, getForegroundTintMode, getGlobalVisibleRect, getGlobalVisibleRect, getHandler, getHasOverlappingRendering, getHeight, getHitRect, getHorizontalFadingEdgeLength, getHorizontalScrollbarHeight, getId, getImportantForAccessibility, getImportantForAutofill, getKeepScreenOn, getKeyDispatcherState, getLabelFor, getLayerType, getLayoutDirection, getLayoutParams, getLeft, getLeftFadingEdgeStrength, getLeftPaddingOffset, getLocalVisibleRect, getLocationInWindow, getLocationOnScreen, getMatrix, getMeasuredHeight, getMeasuredHeightAndState, getMeasuredState, getMeasuredWidth, getMeasuredWidthAndState, getMinimumHeight, getMinimumWidth, getNextClusterForwardId, getNextFocusDownId, getNextFocusForwardId, getNextFocusLeftId, getNextFocusRightId, getNextFocusUpId, getOnFocusChangeListener, getOutlineProvider, 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, getStateListAnimator, getSuggestedMinimumHeight, getSuggestedMinimumWidth, getSystemUiVisibility, getTag, getTag, getTextAlignment, getTextDirection, getTooltipText, getTop, getTopFadingEdgeStrength, getTopPaddingOffset, getTouchables, getTouchDelegate, getTransitionName, getTranslationX, getTranslationY, getTranslationZ, getVerticalFadingEdgeLength, getVerticalScrollbarPosition, 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, isActivated, isAttachedToWindow, isClickable, isContextClickable, isDirty, isDrawingCacheEnabled, isDuplicateParentStateEnabled, isEnabled, isFocusable, isFocusableInTouchMode, isFocused, isFocusedByDefault, isHapticFeedbackEnabled, isHardwareAccelerated, isHorizontalFadingEdgeEnabled, isHorizontalScrollBarEnabled, isHovered, isImportantForAccessibility, isImportantForAutofill, isInEditMode, isInLayout, isInTouchMode, isKeyboardNavigationCluster, isLaidOut, isLayoutDirectionResolved, isLayoutRequested, isLongClickable, isNestedScrollingEnabled, isOpaque, isPaddingOffsetRequired, isPaddingRelative, isPressed, isSaveEnabled, isSaveFromParentEnabled, isScrollbarFadingEnabled, isScrollContainer, isSelected, isShown, isSoundEffectsEnabled, isTemporarilyDetached, isTextAlignmentResolved, isTextDirectionResolved, isVerticalFadingEdgeEnabled, isVerticalScrollBarEnabled, 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, performClick, performContextClick, performContextClick, performHapticFeedback, performHapticFeedback, performLongClick, performLongClick, playSoundEffect, post, postDelayed, postInvalidate, postInvalidate, postInvalidateDelayed, postInvalidateDelayed, postInvalidateOnAnimation, postInvalidateOnAnimation, postOnAnimation, postOnAnimationDelayed, refreshDrawableState, releasePointerCapture, removeCallbacks, removeOnAttachStateChangeListener, removeOnLayoutChangeListener, requestApplyInsets, requestFitSystemWindows, requestFocus, requestFocus, requestFocusFromTouch, requestLayout, requestPointerCapture, requestRectangleOnScreen, requestRectangleOnScreen, requestUnbufferedDispatch, resolveSize, resolveSizeAndState, restoreHierarchyState, saveHierarchyState, scheduleDrawable, scrollBy, scrollTo, sendAccessibilityEvent, sendAccessibilityEventUnchecked, setAccessibilityDelegate, setAccessibilityLiveRegion, setAccessibilityTraversalAfter, setAccessibilityTraversalBefore, setActivated, setAlpha, setAnimation, setAutofillHints, setBackground, setBackgroundColor, setBackgroundDrawable, setBackgroundResource, setBackgroundTintList, setBackgroundTintMode, setBottom, setCameraDistance, setClickable, setClipBounds, setClipToOutline, setContentDescription, setContextClickable, setDefaultFocusHighlightEnabled, setDrawingCacheBackgroundColor, setDrawingCacheEnabled, setDrawingCacheQuality, setDuplicateParentStateEnabled, setElevation, setEnabled, setFadingEdgeLength, setFilterTouchesWhenObscured, setFitsSystemWindows, setFocusable, setFocusable, setFocusableInTouchMode, setFocusedByDefault, setForeground, setForegroundTintList, setForegroundTintMode, setHapticFeedbackEnabled, setHasTransientState, setHorizontalFadingEdgeEnabled, setHorizontalScrollBarEnabled, setHovered, setId, setImportantForAccessibility, setImportantForAutofill, setKeepScreenOn, setKeyboardNavigationCluster, setLabelFor, setLayerPaint, setLayerType, setLayoutDirection, setLayoutParams, setLeft, 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, setOutlineProvider, setOverScrollMode, setPadding, setPaddingRelative, setPivotX, setPivotY, setPointerIcon, setPressed, setRevealOnFocusHint, setRight, setRotation, setRotationX, setRotationY, setSaveEnabled, setSaveFromParentEnabled, setScaleX, setScaleY, setScrollBarDefaultDelayBeforeFade, setScrollBarFadeDuration, setScrollbarFadingEnabled, setScrollBarSize, setScrollBarStyle, setScrollContainer, setScrollIndicators, setScrollIndicators, setScrollX, setScrollY, setSelected, setSoundEffectsEnabled, setStateListAnimator, setSystemUiVisibility, setTag, setTag, setTextAlignment, setTextDirection, setTooltipText, setTop, setTouchDelegate, setTransitionName, setTranslationX, setTranslationY, setTranslationZ, setVerticalFadingEdgeEnabled, setVerticalScrollBarEnabled, setVerticalScrollbarPosition, setWillNotCacheDrawing, setWillNotDraw, setX, setY, setZ, showContextMenu, showContextMenu, startActionMode, startActionMode, startAnimation, startDrag, startDragAndDrop, startNestedScroll, stopNestedScroll, toString, unscheduleDrawable, unscheduleDrawable, updateDragShadow, verifyDrawable, willNotCacheDrawing, willNotDrawclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitcanResolveLayoutDirection, canResolveTextAlignment, canResolveTextDirection, createContextMenu, getLayoutDirection, getParent, getParentForAccessibility, getTextAlignment, getTextDirection, isLayoutDirectionResolved, isLayoutRequested, isTextAlignmentResolved, isTextDirectionResolved, keyboardNavigationClusterSearch, requestFitSystemWindows, requestLayoutpublic PlayerView(android.content.Context context)
public PlayerView(android.content.Context context,
android.util.AttributeSet attrs)
public PlayerView(android.content.Context context,
android.util.AttributeSet attrs,
int defStyleAttr)
public static void switchTargetView(@NonNull
com.google.android.exoplayer2.Player player,
@Nullable
PlayerView oldPlayerView,
@Nullable
PlayerView 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.public com.google.android.exoplayer2.Player getPlayer()
public void setPlayer(com.google.android.exoplayer2.Player player)
Player to use.
To transition a Player from targeting one view to another, it's recommended to use
switchTargetView(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
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.public void setVisibility(int visibility)
setVisibility in class android.view.Viewpublic void setResizeMode(int resizeMode)
resizeMode - The resize mode.public int getResizeMode()
public boolean getUseArtwork()
public void setUseArtwork(boolean useArtwork)
useArtwork - Whether artwork is displayed.public android.graphics.Bitmap getDefaultArtwork()
public void setDefaultArtwork(android.graphics.Bitmap defaultArtwork)
useArtwork is true and no artwork is
present in the media.defaultArtwork - the default artwork to display.public 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 setShowBuffering(boolean showBuffering)
showBuffering - Whether the buffering icon is displayerpublic void setErrorMessageProvider(@Nullable
com.google.android.exoplayer2.util.ErrorMessageProvider<? super com.google.android.exoplayer2.ExoPlaybackException> errorMessageProvider)
ErrorMessageProvider.errorMessageProvider - The error message provider.public void setCustomErrorMessage(@Nullable
java.lang.CharSequence message)
null to this method.message - The message to display, or null to clear a previously set message.public boolean dispatchKeyEvent(android.view.KeyEvent event)
dispatchKeyEvent in class android.view.ViewGrouppublic boolean dispatchMediaKeyEvent(android.view.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 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(PlayerControlView.VisibilityListener listener)
PlayerControlView.VisibilityListener.listener - The listener to be notified about visibility changes.public void setPlaybackPreparer(@Nullable
com.google.android.exoplayer2.PlaybackPreparer playbackPreparer)
PlaybackPreparer.playbackPreparer - The PlaybackPreparer.public void setControlDispatcher(@Nullable
com.google.android.exoplayer2.ControlDispatcher controlDispatcher)
ControlDispatcher.controlDispatcher - The ControlDispatcher, or null to use DefaultControlDispatcher.public void setRewindIncrementMs(int rewindMs)
rewindMs - The rewind increment in milliseconds. A non-positive value will cause the
rewind button to be disabled.public void setFastForwardIncrementMs(int fastForwardMs)
fastForwardMs - The fast forward increment in milliseconds. A non-positive value will
cause the fast forward button to be disabled.public void setRepeatToggleModes(int repeatToggleModes)
repeatToggleModes - A set of RepeatModeUtil.RepeatToggleModes.public void setShowShuffleButton(boolean showShuffleButton)
showShuffleButton - Whether the shuffle 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(AspectRatioFrameLayout.AspectRatioListener listener)
listener - The listener to be notified about aspect ratios changes of the video content or
the content frame.public android.view.View getVideoSurfaceView()
SurfaceView by default, or if the surface_type attribute is set to surface_view.
TextureView if surface_type is texture_view.
null if surface_type is none.
SurfaceView, TextureView or null.public android.widget.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.public SubtitleView getSubtitleView()
SubtitleView.SubtitleView, or null if the layout has been customized and the
subtitle view is not present.public boolean onTouchEvent(android.view.MotionEvent ev)
onTouchEvent in class android.view.Viewpublic boolean onTrackballEvent(android.view.MotionEvent ev)
onTrackballEvent in class android.view.View