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
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.
surface_view
shutter_background_color - The background color of the exo_shutter
view.
setShutterBackgroundColor(int)
unset
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_subtitles - Displays subtitles.
SubtitleView
exo_artwork - Displays album art.
ImageView
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.
|
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 |
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 |
setDefaultArtwork(android.graphics.Bitmap defaultArtwork)
Sets the default artwork to display if
useArtwork is true and no artwork is
present in the media. |
void |
setFastForwardIncrementMs(int fastForwardMs)
Sets the fast forward increment in milliseconds.
|
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 |
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 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 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 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