videoview

构造函数:

public VideoView (Context context)

创建一个默认属性的VideoView实例。

参数

context 视图运行的应用程序上下文,通过它可以访问当前主题、资源等等。



public VideoView (Context context, AttributeSet attrs)

创建一个带有attrs属性的VideoView实例。

参数

context 视图运行的应用程序上下文,通过它可以访问当前主题、资源等等。

attrs 用于视图的 XML 标签属性集合。



public VideoView (Context context, AttributeSet attrs, int defStyle)

创建一个带有attrs属性,并且指定其默认样式的VideoView实例。

参数

context 视图运行的应用程序上下文,通过它可以访问当前主题、资源等等。

attrs 用于视图的 XML 标签属性集合。

defStyle 应用到视图的默认风格。如果为 0 则不应用(包括当前主题中的)风格。 该值可以是当前主题中的属性资源,或者是明确的风格资源 ID。



公共方法

public boolean canPause ()

(译者注:判断是否能够暂停播放视频)



public boolean canSeekBackward ()

(译者注:判断是否能够倒退)



public boolean canSeekForward ()

(译者注:判断是否能够快进)



public int getBufferPercentage ()

(译者注:获得缓冲区的百分比)



public int getCurrentPosition ()

(译者注:获得当前的位置)



public int getDuration ()

(译者注:获得所播放视频的总时间)



public boolean isPlaying ()

(译者注:判断是否正在播放视频)



public boolean onKeyDown (int keyCode, KeyEvent event)

KeyEvent.Callback.onKeyMultiple() 的默认实现。如果视图可用并可按, 当按下 KEYCODE_DPAD_CENTER 或 KEYCODE_ENTER 时执行视图的按下事件。

参数

keyCode 表示按下的键的、在 KEYCODE_ENTER 中定义的键盘代码

event KeyEvent 对象,定义了按钮动作

返回值

如果处理了事件,返回真。如果允许下一个事件接受器处理该事件,可以返回假



public boolean onTouchEvent (MotionEvent ev)

实现该方法来处理触屏事件。

参数

event 触屏事件

返回值

如果事件已经处理返回True,否则返回false。



public boolean onTrackballEvent (MotionEvent ev)

实现这个方法去处理轨迹球的动作事件,轨迹球相对于上次事件移动的位置能用MotionEvent.getX() 和 MotionEvent.getY()函数取回。对应用户按下一次方向键, 他们通常作为一次移动处理(为了表现来自轨迹球的更小粒度的移动信息,他们返回小数)。

参数

ev 动作的事件



public void pause ()

(译者注:使得播放暂停)



public int resolveAdjustedSize (int desiredSize, int measureSpec)

(译者注:取得调整后的尺寸。如果measureSpec对象传入的模式是UNSPECIFIED那么返回的是desiredSize。如果measureSpec对象传入的模式是AT_MOST,返回的将是desiredSize和measureSpec对象的尺寸两者中最小的那个。如果measureSpec对象传入的模式是EXACTLY,那么返回的是measureSpec对象中的尺寸大小值。

关于MeasureSpec类的额外说明:MeasureSpec是一个android.view.View的内部类。它封装了从父类传送到子类的布局要求信息。每个MeasureSpec对象描述了控件的高度或者宽度。MeasureSpec对象是由尺寸和模式组成的,有3个模式:UNSPECIFIED、EXACTLY、AT_MOST,这个对象由MeasureSpec.makeMeasureSpec()函数创建。)



public void resume ()

(译者注:恢复挂起的播放器)



public void seekTo (int msec)

(译者注:设置播放位置)



public void setMediaController (MediaController controller)

(译者注:设置媒体控制器)



public void setOnCompletionListener (MediaPlayer.OnCompletionListener l)

注册在媒体文件播放完毕时调用的回调函数。

参数

l 要执行的回调函数



public void setOnErrorListener (MediaPlayer.OnErrorListener l)

注册在设置或播放过程中发生错误时调用的回调函数。如果未指定回调函数, 或回调函数返回假,VideoView 会通知用户发生了错误。

参数

l 要执行的回调函数



public void setOnPreparedListener (MediaPlayer.OnPreparedListener l)

注册在媒体文件加载完毕,可以播放时调用的回调函数。

参数

l 要执行的回调函数



public void setVideoPath (String path)

(译者注:设置视频文件的路径名)



public void setVideoURI (Uri uri)

(译者注:设置视频文件的统一资源标识符)



public void start ()

(译者注:开始播放视频文件)



public void stopPlayback ()

(译者注:停止回放视频文件)



public void suspend ()

(译者注:挂起视频文件的播放)



补充

文章精选

VideoView « { Android学习指南}

Android利用VideoView实现VideoPlayer

编写简单自定义VideoView

Android VideoView如何播放RTSP的流

android利用VideoView实现视频全屏播放


视频开发Android VideoView的使用例程

作者:Blacklee

标签: AndroidVideoView视频
OPhone开发┆ 评论(1) ┆ 阅读(1973)


一、 xxxvideo.java

public class RemoteVideo extends Activity {

private String path = "";

private String textUrl = "";

private VideoView mVideoView;

private static int i = 0;





private int width;

private int heigh;

private Dialog dialog;

private Handler mHandler = new Handler();


public void onCreate(Bundle icicle) {

super.onCreate(icicle);

requestWindowFeature(Window.FEATURE_NO_TITLE);

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

Bundle bundle = this.getIntent().getExtras();

DisplayMetrics dm = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(dm);

width=dm.widthPixels;

heigh=dm.heightPixels;

textUrl = bundle.getString("url");

if(width/heigh>0)

{

setContentView(R.layout.videoview);

path = bundle.getString("widthurl");

Log.i("MP4", "heng"+path);

}

if(width/heigh==0)

{

setContentView(R.layout.view);

path = bundle.getString("heighturl");

Log.i("MP4", "shu"+path);

}

dialog=ProgressDialog.show(this, "视频加载中...", "请您稍候");

mVideoView = (VideoView) findViewById(R.id.surface_view);

mVideoView.setVideoPath(path);

MediaController controller = new MediaController(this);

mVideoView.setMediaController(controller);

mVideoView.requestFocus();

mVideoView.setOnPreparedListener(new OnPreparedListener() {

//@Override

public void onPrepared(MediaPlayer mp) {

mVideoView.setBackgroundColor(Color.argb(0, 0, 255, 0));

dialog.dismiss();

}

});

mVideoView.setOnCompletionListener(new OnCompletionListener() {

//@Override

public void onCompletion(MediaPlayer mp) {

Toast.makeText(RemoteVideo.this, "video play finished!", Toast.LENGTH_LONG)

.show();

}

});

controller.setOnTouchListener(new View.OnTouchListener() {


public boolean onTouch(View v, MotionEvent event) {

return true;

}

});

}


@Override

protected void onResume() {

super.onResume();

mVideoView.seekTo(i);

mVideoView.start();

}

@Override

protected void onStop() {

super.onStop();

mVideoView.pause();

i = mVideoView.getCurrentPosition();

}

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {

finish();

return true;

}

return false;

}

}


说明:

1. VideoView可接收本地和远程的视频源并解码;

2. MediaController为videoview的控制条类;

3. bundle获取intent传过来的视频路径;

二、videoview.xml


<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android"

Android:layout_width="fill_parent" android:layout_height="fill_parent"

Android:gravity="left" android:orientation="horizontal">

<VideoView Android:id="@+id/surface_view"

Android:layout_width="176px" android:layout_height="132px"

Android:layout_gravity="left" />

<WebView Android:id="@+id/web_openonline"

Android:layout_width="wrap_content"

Android:layout_height="wrap_content"/>

</LinearLayout>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值