Most visited

Recently visited

Added in API level 1

VideoView

public class VideoView
extends SurfaceView implements MediaController.MediaPlayerControl

java.lang.Object
   ↳ android.view.View
     ↳ android.view.SurfaceView
       ↳ android.widget.VideoView


显示一个视频文件。 VideoView类可以加载来自各种来源(如资源或内容提供商)的图像,负责从视频中计算其测量结果,以便它可以在任何布局管理器中使用,并提供各种显示选项,如缩放和着色。

注意:进入后台时,VideoView不会保留其完整状态。 特别是,它不会恢复通过addSubtitleSource()添加的当前播放状态,播放位置,所选曲目或任何字幕曲目。 应用程序应在onSaveInstanceState(Bundle)onRestoreInstanceState(Bundle)自行保存和恢复。

还要注意,当VideoView恢复时,音频会话ID(从 getAudioSessionId() )可能会改变其先前返回的值。

Summary

Inherited XML attributes

From class android.view.View

Inherited constants

From class android.view.View

Inherited fields

From class android.view.View

Public constructors

VideoView(Context context)
VideoView(Context context, AttributeSet attrs)
VideoView(Context context, AttributeSet attrs, int defStyleAttr)
VideoView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)

Public methods

void addSubtitleSource(InputStream is, MediaFormat format)

添加外部字幕源文件(来自提供的输入流)。请注意,单个外部字幕源可能包含多个或不支持的轨道。

boolean canPause()
boolean canSeekBackward()
boolean canSeekForward()
void draw(Canvas canvas)

手动将此视图(及其所有子项)呈现给定的Canvas。

CharSequence getAccessibilityClassName()

返回此对象的类名称以用于辅助功能。

int getAudioSessionId()

获取此VideoView使用的播放器的音频会话ID。

int getBufferPercentage()
int getCurrentPosition()
int getDuration()
boolean isPlaying()
boolean onKeyDown(int keyCode, KeyEvent event)

KeyEvent.Callback.onKeyDown()默认实现:当 KEYCODE_DPAD_CENTERKEYCODE_ENTER被释放时,如果视图已启用并且可点击,则执行按下视图。

boolean onTouchEvent(MotionEvent ev)

实现此方法来处理触摸屏幕动作事件。

boolean onTrackballEvent(MotionEvent ev)

实现这个方法来处理轨迹球运动事件。

void pause()
int resolveAdjustedSize(int desiredSize, int measureSpec)
void resume()
void seekTo(int msec)
void setMediaController(MediaController controller)
void setOnCompletionListener(MediaPlayer.OnCompletionListener l)

在播放过程中到达媒体文件结尾时注册要调用的回调。

void setOnErrorListener(MediaPlayer.OnErrorListener l)

在播放或设置过程中发生错误时注册要调用的回调。

void setOnInfoListener(MediaPlayer.OnInfoListener l)

在回放或设置过程中发生信息事件时,注册要调用的回调。

void setOnPreparedListener(MediaPlayer.OnPreparedListener l)

注册一个回调,当媒体文件加载并准备就绪时调用。

void setVideoPath(String path)

设置视频路径。

void setVideoURI(Uri uri, Map<StringString> headers)

使用特定标头设置视频URI。

void setVideoURI(Uri uri)

设置视频URI。

void start()
void stopPlayback()
void suspend()

Protected methods

void onAttachedToWindow()

这在视图附加到窗口时被调用。

void onDetachedFromWindow()

这是在视图从窗口分离时调用的。

void onLayout(boolean changed, int left, int top, int right, int bottom)

当这个视图为每个孩子分配一个大小和位置时,从布局调用。

void onMeasure(int widthMeasureSpec, int heightMeasureSpec)

测量视图及其内容以确定测量宽度和测量高度。

Inherited methods

From class android.view.SurfaceView
From class android.view.View
From class java.lang.Object
From interface android.graphics.drawable.Drawable.Callback
From interface android.view.KeyEvent.Callback
From interface android.view.accessibility.AccessibilityEventSource
From interface android.widget.MediaController.MediaPlayerControl

Public constructors

VideoView

Added in API level 1
VideoView (Context context)

Parameters
context Context

VideoView

Added in API level 1
VideoView (Context context, 
                AttributeSet attrs)

Parameters
context Context
attrs AttributeSet

VideoView

Added in API level 1
VideoView (Context context, 
                AttributeSet attrs, 
                int defStyleAttr)

Parameters
context Context
attrs AttributeSet
defStyleAttr int

VideoView

Added in API level 21
VideoView (Context context, 
                AttributeSet attrs, 
                int defStyleAttr, 
                int defStyleRes)

Parameters
context Context
attrs AttributeSet
defStyleAttr int
defStyleRes int

Public methods

addSubtitleSource

Added in API level 19
void addSubtitleSource (InputStream is, 
                MediaFormat format)

添加外部字幕源文件(来自提供的输入流)。请注意,单个外部字幕源可能包含多个或不支持的轨道。 如果源中包含至少一条轨道,则会收到MEDIA_INFO_METADATA_UPDATE信息消息。 否则,如果读取源时间过长,则会收到MEDIA_INFO_SUBTITLE_TIMED_OUT消息。 如果源不包含支持的轨道(包括空白源文件或空输入流),则会收到MEDIA_INFO_UNSUPPORTED_SUBTITLE消息。 可以使用getTrackInfo()查找可用轨道的总数,以查看此方法调用后可用的附加轨道。

Parameters
is InputStream: input stream containing the subtitle data. It will be closed by the media framework.
format MediaFormat: the format of the subtitle track(s). Must contain at least the mime type (KEY_MIME) and the language (KEY_LANGUAGE) of the file. If the file itself contains the language information, specify "und" for the language.

canPause

Added in API level 5
boolean canPause ()

Returns
boolean

canSeekBackward

Added in API level 5
boolean canSeekBackward ()

Returns
boolean

canSeekForward

Added in API level 5
boolean canSeekForward ()

Returns
boolean

draw

Added in API level 1
void draw (Canvas canvas)

手动将此视图(及其所有子项)呈现给定的Canvas。 在调用这个函数之前,视图必须已经完成了一个完整的布局。 在实现视图时,实现onDraw(android.graphics.Canvas)而不是重写此方法。 如果您确实需要重写此方法,请调用超类版本。

Parameters
canvas Canvas: The Canvas to which the View is rendered.

getAccessibilityClassName

Added in API level 23
CharSequence getAccessibilityClassName ()

返回此对象的类名称以用于辅助功能。 如果子类正在实现的东西应该被视为一个全新的视图类,当它被可访问性使用时,子类只应该覆盖这个子类,与它所源自的类无关。 这用于填写AccessibilityNodeInfo.setClassName

Returns
CharSequence

getAudioSessionId

Added in API level 18
int getAudioSessionId ()

获取此VideoView使用的播放器的音频会话ID。 这可用于将音频效果应用于视频的音轨。

Returns
int The audio session, or 0 if there was an error.

getBufferPercentage

Added in API level 1
int getBufferPercentage ()

Returns
int

getCurrentPosition

Added in API level 1
int getCurrentPosition ()

Returns
int

getDuration

Added in API level 1
int getDuration ()

Returns
int

isPlaying

Added in API level 1
boolean isPlaying ()

Returns
boolean

onKeyDown

Added in API level 1
boolean onKeyDown (int keyCode, 
                KeyEvent event)

KeyEvent.Callback.onKeyDown()默认实现:当 KEYCODE_DPAD_CENTERKEYCODE_ENTER被释放时,如果视图被启用并且可点击,则执行按下视图。

软件键盘中的按键通常不会触发这个监听器,尽管在某些情况下有些人会选择这样做。 不要依靠这个来捕捉软件按键。

Parameters
keyCode int: a key code that represents the button pressed, from KeyEvent
event KeyEvent: the KeyEvent object that defines the button action
Returns
boolean If you handled the event, return true. If you want to allow the event to be handled by the next receiver, return false.

onTouchEvent

Added in API level 1
boolean onTouchEvent (MotionEvent ev)

实现此方法来处理触摸屏幕动作事件。

如果此方法用于检测点击操作,建议通过执行并调用performClick()来执行操作。 这将确保一致的系统行为,包括:

  • obeying click sound preferences
  • dispatching OnClickListener calls
  • handling ACTION_CLICK when accessibility features are enabled

Parameters
ev MotionEvent: The motion event.
Returns
boolean True if the event was handled, false otherwise.

onTrackballEvent

Added in API level 1
boolean onTrackballEvent (MotionEvent ev)

实现这个方法来处理轨迹球运动事件。 自上次事件以来轨迹球的相对移动可通过MotionEvent.getX()MotionEvent.getY()进行检索。 这些都是标准化的,因此移动1对应于用户按下一个DPAD键(所以它们通常是小数值,表示轨迹球中可用的更细粒度的移动信息)。

Parameters
ev MotionEvent: The motion event.
Returns
boolean True if the event was handled, false otherwise.

pause

Added in API level 1
void pause ()

resolveAdjustedSize

Added in API level 1
int resolveAdjustedSize (int desiredSize, 
                int measureSpec)

Parameters
desiredSize int
measureSpec int
Returns
int

resume

Added in API level 8
void resume ()

seekTo

Added in API level 1
void seekTo (int msec)

Parameters
msec int

setMediaController

Added in API level 1
void setMediaController (MediaController controller)

Parameters
controller MediaController

setOnCompletionListener

Added in API level 1
void setOnCompletionListener (MediaPlayer.OnCompletionListener l)

在播放过程中到达媒体文件结尾时注册要调用的回调。

Parameters
l MediaPlayer.OnCompletionListener: The callback that will be run

setOnErrorListener

Added in API level 1
void setOnErrorListener (MediaPlayer.OnErrorListener l)

在播放或设置过程中发生错误时注册要调用的回调。 如果没有指定侦听器,或者侦听器返回false,则VideoView将通知用户任何错误。

Parameters
l MediaPlayer.OnErrorListener: The callback that will be run

setOnInfoListener

Added in API level 17
void setOnInfoListener (MediaPlayer.OnInfoListener l)

在回放或设置过程中发生信息事件时,注册要调用的回调。

Parameters
l MediaPlayer.OnInfoListener: The callback that will be run

setOnPreparedListener

Added in API level 1
void setOnPreparedListener (MediaPlayer.OnPreparedListener l)

注册一个回调,当媒体文件加载并准备就绪时调用。

Parameters
l MediaPlayer.OnPreparedListener: The callback that will be run

setVideoPath

Added in API level 1
void setVideoPath (String path)

设置视频路径。

Parameters
path String: the path of the video.

setVideoURI

Added in API level 21
void setVideoURI (Uri uri, 
                Map<StringString> headers)

使用特定标头设置视频URI。

Parameters
uri Uri: the URI of the video.
headers Map: the headers for the URI request. Note that the cross domain redirection is allowed by default, but that can be changed with key/value pairs through the headers parameter with "android-allow-cross-domain-redirect" as the key and "0" or "1" as the value to disallow or allow cross domain redirection.

setVideoURI

Added in API level 1
void setVideoURI (Uri uri)

设置视频URI。

Parameters
uri Uri: the URI of the video.

start

Added in API level 1
void start ()

stopPlayback

Added in API level 1
void stopPlayback ()

suspend

Added in API level 8
void suspend ()

Protected methods

onAttachedToWindow

Added in API level 1
void onAttachedToWindow ()

这在视图附加到窗口时被调用。 此时它有一个Surface并将开始绘制。 请注意,此函数保证在onDraw(android.graphics.Canvas)之前onDraw(android.graphics.Canvas) ,但可能会在第一次onDraw之前的任何时候调用 - 包括onMeasure(int, int)之前或之后。

onDetachedFromWindow

Added in API level 1
void onDetachedFromWindow ()

这是在视图从窗口分离时调用的。 此时它不再有绘图表面。

onLayout

Added in API level 1
void onLayout (boolean changed, 
                int left, 
                int top, 
                int right, 
                int bottom)

当这个视图为每个孩子分配一个大小和位置时,从布局调用。 带孩子的派生类应该覆盖这个方法,并调用他们每个孩子的布局。

Parameters
changed boolean: This is a new size or position for this view
left int: Left position, relative to parent
top int: Top position, relative to parent
right int: Right position, relative to parent
bottom int: Bottom position, relative to parent

onMeasure

Added in API level 1
void onMeasure (int widthMeasureSpec, 
                int heightMeasureSpec)

测量视图及其内容以确定测量宽度和测量高度。 此方法由measure(int, int)调用, measure(int, int)子类覆盖以提供其内容的准确和有效的度量。

合同:覆盖此方法时, 必须致电setMeasuredDimension(int, int)来存储此视图的测量宽度和高度。 如果不这样做,将触发IllegalStateException ,由measure(int, int)引发。 调用超类' onMeasure(int, int)是一个有效的用法。

Measure的基类实现默认为背景大小,除非MeasureSpec允许更大的大小。 子类应该覆盖onMeasure(int, int)以提供更好的内容度量。

如果此方法被覆盖,则子类的责任是确保测量的高度和宽度至少为视图的最小高度和宽度( getSuggestedMinimumHeight()getSuggestedMinimumWidth() )。

Parameters
widthMeasureSpec int: horizontal space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec.
heightMeasureSpec int: vertical space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec.

Hooray!