public final class SimpleExoPlayerView extends FrameLayout
SimpleExoPlayer
media playbacks. It displays video, subtitles and
album art during playback, and displays playback controls using a PlaybackControlView
.
A SimpleExoPlayerView 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
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
player_layout_id
- Specifies the id of the layout to be inflated. See below
for more details.
R.id.exo_simple_player_view
controller_layout_id
- Specifies the id of the layout resource to be
inflated by the child PlaybackControlView
. See below for more details.
R.id.exo_playback_control_view
PlaybackControlView
can also be set on a
SimpleExoPlayerView, and will be propagated to the inflated PlaybackControlView
unless the layout is overridden to specify a custom exo_controller
(see below).
exo_simple_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 SimpleExoPlayerView. 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
PlaybackControlView
. Ignored if an exo_controller
view exists.
View
exo_controller
- An already inflated PlaybackControlView
. Allows use
of a custom extension of PlaybackControlView
. 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.
PlaybackControlView
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_simple_player_view.xml
is useful to customize the layout of
SimpleExoPlayerView 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 SimpleExoPlayerView. This will cause the specified layout to be inflated instead
of exo_simple_player_view.xml
for only the instance on which the attribute is set.FrameLayout.LayoutParams
ViewGroup.MarginLayoutParams, ViewGroup.OnHierarchyChangeListener
View.AccessibilityDelegate, View.BaseSavedState, View.DragShadowBuilder, View.MeasureSpec, View.OnApplyWindowInsetsListener, View.OnAttachStateChangeListener, 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
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
ACCESSIBILITY_LIVE_REGION_ASSERTIVE, ACCESSIBILITY_LIVE_REGION_NONE, ACCESSIBILITY_LIVE_REGION_POLITE, ALPHA, 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, 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, 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, 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_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 |
---|
SimpleExoPlayerView(Context context) |
SimpleExoPlayerView(Context context,
AttributeSet attrs) |
SimpleExoPlayerView(Context context,
AttributeSet attrs,
int defStyleAttr) |
Modifier and Type | Method and Description |
---|---|
boolean |
dispatchKeyEvent(KeyEvent event) |
boolean |
dispatchMediaKeyEvent(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.
|
Bitmap |
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. |
SimpleExoPlayer |
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.
|
View |
getVideoSurfaceView()
Gets the view onto which video is rendered.
|
void |
hideController()
Hides the playback controls.
|
boolean |
onTouchEvent(MotionEvent ev) |
boolean |
onTrackballEvent(MotionEvent ev) |
void |
setControlDispatcher(PlaybackControlView.ControlDispatcher controlDispatcher)
Sets the
PlaybackControlView.ControlDispatcher . |
void |
setControllerAutoShow(boolean controllerAutoShow)
Sets whether the playback controls are automatically shown when playback starts, pauses, ends,
or fails.
|
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(PlaybackControlView.VisibilityListener listener)
|
void |
setDefaultArtwork(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 |
setPlayer(SimpleExoPlayer player)
Set the
SimpleExoPlayer 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 |
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(SimpleExoPlayer player,
SimpleExoPlayerView oldPlayerView,
SimpleExoPlayerView newPlayerView)
Switches the view targeted by a given
SimpleExoPlayer . |
checkLayoutParams, generateDefaultLayoutParams, generateLayoutParams, generateLayoutParams, getAccessibilityClassName, getConsiderGoneChildrenWhenMeasuring, getMeasureAllChildren, onLayout, onMeasure, setForegroundGravity, setMeasureAllChildren, shouldDelayChildPressedState
addChildrenForAccessibility, addFocusables, 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, dispatchConfigurationChanged, dispatchDisplayHint, dispatchDragEvent, dispatchDraw, dispatchDrawableHotspotChanged, dispatchFreezeSelfOnly, dispatchGenericFocusedEvent, dispatchGenericPointerEvent, dispatchHoverEvent, dispatchKeyEventPreIme, dispatchKeyShortcutEvent, 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, hasFocusable, hasTransientState, indexOfChild, invalidateChild, invalidateChildInParent, isAlwaysDrawnWithCacheEnabled, isAnimationCacheEnabled, isChildrenDrawingOrderEnabled, isChildrenDrawnWithCacheEnabled, isMotionEventSplittingEnabled, isTransitionGroup, jumpDrawablesToCurrentState, layout, measureChild, measureChildren, measureChildWithMargins, notifySubtreeAccessibilityStateChanged, offsetDescendantRectToMyCoords, offsetRectIntoDescendantCoords, onAttachedToWindow, onCreateDrawableState, 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, 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, updateViewLayout
addFocusables, addOnAttachStateChangeListener, addOnLayoutChangeListener, animate, announceForAccessibility, 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, getBackground, getBackgroundTintList, getBackgroundTintMode, getBaseline, getBottom, getBottomFadingEdgeStrength, getBottomPaddingOffset, getCameraDistance, getClipBounds, getClipBounds, getClipToOutline, getContentDescription, getContext, getContextMenuInfo, getDefaultSize, getDisplay, getDrawableState, getDrawingCache, getDrawingCache, getDrawingCacheBackgroundColor, getDrawingCacheQuality, getDrawingRect, getDrawingTime, getElevation, getFilterTouchesWhenObscured, getFitsSystemWindows, getFocusables, getFocusedRect, getForeground, getForegroundGravity, getForegroundTintList, getForegroundTintMode, getGlobalVisibleRect, getGlobalVisibleRect, getHandler, getHasOverlappingRendering, getHeight, getHitRect, getHorizontalFadingEdgeLength, getHorizontalScrollbarHeight, getId, getImportantForAccessibility, getKeepScreenOn, getKeyDispatcherState, getLabelFor, getLayerType, getLayoutDirection, getLayoutParams, getLeft, getLeftFadingEdgeStrength, getLeftPaddingOffset, getLocalVisibleRect, getLocationInWindow, getLocationOnScreen, getMatrix, getMeasuredHeight, getMeasuredHeightAndState, getMeasuredState, getMeasuredWidth, getMeasuredWidthAndState, getMinimumHeight, getMinimumWidth, 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, getTop, getTopFadingEdgeStrength, getTopPaddingOffset, getTouchables, getTouchDelegate, getTransitionName, getTranslationX, getTranslationY, getTranslationZ, getVerticalFadingEdgeLength, getVerticalScrollbarPosition, getVerticalScrollbarWidth, getViewTreeObserver, getVisibility, getWidth, getWindowAttachCount, getWindowId, getWindowSystemUiVisibility, getWindowToken, getWindowVisibility, getWindowVisibleDisplayFrame, getX, getY, getZ, hasNestedScrollingParent, hasOnClickListeners, hasOverlappingRendering, hasWindowFocus, inflate, invalidate, invalidate, invalidate, invalidateDrawable, invalidateOutline, isAccessibilityFocused, isActivated, isAttachedToWindow, isClickable, isContextClickable, isDirty, isDrawingCacheEnabled, isDuplicateParentStateEnabled, isEnabled, isFocusable, isFocusableInTouchMode, isFocused, isHapticFeedbackEnabled, isHardwareAccelerated, isHorizontalFadingEdgeEnabled, isHorizontalScrollBarEnabled, isHovered, isImportantForAccessibility, isInEditMode, isInLayout, isInTouchMode, isLaidOut, isLayoutDirectionResolved, isLayoutRequested, isLongClickable, isNestedScrollingEnabled, isOpaque, isPaddingOffsetRequired, isPaddingRelative, isPressed, isSaveEnabled, isSaveFromParentEnabled, isScrollbarFadingEnabled, isScrollContainer, isSelected, isShown, isSoundEffectsEnabled, isTemporarilyDetached, isTextAlignmentResolved, isTextDirectionResolved, isVerticalFadingEdgeEnabled, isVerticalScrollBarEnabled, measure, mergeDrawableStates, offsetLeftAndRight, offsetTopAndBottom, onAnimationEnd, onAnimationStart, onApplyWindowInsets, onCancelPendingInputEvents, 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, onPopulateAccessibilityEvent, 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, removeCallbacks, removeOnAttachStateChangeListener, removeOnLayoutChangeListener, requestApplyInsets, requestFitSystemWindows, requestFocus, requestFocus, requestFocusFromTouch, requestLayout, requestRectangleOnScreen, requestRectangleOnScreen, requestUnbufferedDispatch, resolveSize, resolveSizeAndState, restoreHierarchyState, saveHierarchyState, scheduleDrawable, scrollBy, scrollTo, sendAccessibilityEvent, sendAccessibilityEventUnchecked, setAccessibilityDelegate, setAccessibilityLiveRegion, setAccessibilityTraversalAfter, setAccessibilityTraversalBefore, setActivated, setAlpha, setAnimation, setBackground, setBackgroundColor, setBackgroundDrawable, setBackgroundResource, setBackgroundTintList, setBackgroundTintMode, setBottom, setCameraDistance, setClickable, setClipBounds, setClipToOutline, setContentDescription, setContextClickable, setDrawingCacheBackgroundColor, setDrawingCacheEnabled, setDrawingCacheQuality, setDuplicateParentStateEnabled, setElevation, setEnabled, setFadingEdgeLength, setFilterTouchesWhenObscured, setFitsSystemWindows, setFocusable, setFocusableInTouchMode, setForeground, setForegroundTintList, setForegroundTintMode, setHapticFeedbackEnabled, setHasTransientState, setHorizontalFadingEdgeEnabled, setHorizontalScrollBarEnabled, setHovered, setId, setImportantForAccessibility, setKeepScreenOn, setLabelFor, setLayerPaint, setLayerType, setLayoutDirection, setLayoutParams, setLeft, setLongClickable, setMeasuredDimension, setMinimumHeight, setMinimumWidth, setNestedScrollingEnabled, setNextFocusDownId, setNextFocusForwardId, setNextFocusLeftId, setNextFocusRightId, setNextFocusUpId, setOnApplyWindowInsetsListener, 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, 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, willNotDraw
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
canResolveLayoutDirection, canResolveTextAlignment, canResolveTextDirection, createContextMenu, getLayoutDirection, getParent, getParentForAccessibility, getTextAlignment, getTextDirection, isLayoutDirectionResolved, isLayoutRequested, isTextAlignmentResolved, isTextDirectionResolved, requestFitSystemWindows, requestLayout
public SimpleExoPlayerView(Context context)
public SimpleExoPlayerView(Context context, AttributeSet attrs)
public SimpleExoPlayerView(Context context, AttributeSet attrs, int defStyleAttr)
public static void switchTargetView(@NonNull SimpleExoPlayer player, @Nullable SimpleExoPlayerView oldPlayerView, @Nullable SimpleExoPlayerView newPlayerView)
SimpleExoPlayer
.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 SimpleExoPlayer getPlayer()
public void setPlayer(SimpleExoPlayer player)
SimpleExoPlayer
to use.
To transition a SimpleExoPlayer
from targeting one view to another, it's recommended to
use switchTargetView(SimpleExoPlayer, SimpleExoPlayerView, SimpleExoPlayerView)
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 SimpleExoPlayer
to use.public void setVisibility(int visibility)
setVisibility
in class View
public void setResizeMode(int resizeMode)
resizeMode
- The resize mode.public boolean getUseArtwork()
public void setUseArtwork(boolean useArtwork)
useArtwork
- Whether artwork is displayed.public Bitmap getDefaultArtwork()
public void setDefaultArtwork(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 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 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 setControllerVisibilityListener(PlaybackControlView.VisibilityListener listener)
listener
- The listener to be notified about visibility changes.public void setControlDispatcher(PlaybackControlView.ControlDispatcher controlDispatcher)
PlaybackControlView.ControlDispatcher
.controlDispatcher
- The PlaybackControlView.ControlDispatcher
, or null to use
PlaybackControlView.DEFAULT_CONTROL_DISPATCHER
.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 setShowMultiWindowTimeBar(boolean showMultiWindowTimeBar)
showMultiWindowTimeBar
- Whether to show all windows.public 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 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(MotionEvent ev)
onTouchEvent
in class View
public boolean onTrackballEvent(MotionEvent ev)
onTrackballEvent
in class View