-videoVIew 继承SurfaceView

使用android的VideoView来播放一个视频,步骤是:
1,在xml中创建一个videoView,
2,在java中导入,然后创建一个MediaController控制条来控制。
3,利用videoView的setVideoPath来把打开的视频文件设置进去,如videoView.setVideoPath(videoFile.getAbsolutePath());
4,把videoView和MediaController关联起来,如
videoView.setMediaController(mediaController);
mediaController.setMediaPlayer(videoView);
5,设置videoView.requestFocus(); videoView.start(); 既可以播放视频。

xml文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical" >
  6. <VideoView
  7. android:id="@+id/video"
  8. android:layout_width="fill_parent"
  9. android:layout_height="fill_parent" />
  10. <Button
  11. android:id="@+id/btnShow"
  12. android:text="show"
  13. android:layout_width="wrap_content"
  14. android:layout_height="wrap_content"
  15. />
  16. <Button
  17. android:id="@+id/btnHide"
  18. android:text="hide"
  19. android:layout_width="wrap_content"
  20. android:layout_height="wrap_content"
  21. />
  22. </LinearLayout>

java  文件:

  1. /*package com.example.tstmediaplaycontrol;
  2. import android.os.Bundle;
  3. import android.app.Activity;
  4. import android.view.Menu;
  5. import android.view.MenuItem;
  6. import android.support.v4.app.NavUtils;
  7. public class MainActivity extends Activity {
  8. @Override
  9. public void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.activity_main);
  12. }
  13. @Override
  14. public boolean onCreateOptionsMenu(Menu menu) {
  15. getMenuInflater().inflate(R.menu.activity_main, menu);
  16. return true;
  17. }
  18. }*/
  19. package com.example.tstmediaplaycontrol;
  20. import java.io.File;
  21. import android.app.Activity;
  22. import android.graphics.PixelFormat;
  23. import android.os.Bundle;
  24. import android.view.View;
  25. import android.widget.Button;
  26. import android.widget.MediaController;
  27. import android.widget.Toast;
  28. import android.widget.VideoView;
  29. public class MainActivity extends Activity {
  30. private VideoView videoView;
  31. private Button btnHide, btnShow;
  32. MediaController mediaController;
  33. public void onCreate(Bundle savedInstanceState) {
  34. super.onCreate(savedInstanceState);
  35. getWindow().setFormat(PixelFormat.TRANSLUCENT);
  36. setContentView(R.layout.activity_main);
  37. videoView = (VideoView) this.findViewById(R.id.video);
  38. btnShow = (Button) this.findViewById(R.id.btnShow);
  39. btnHide = (Button) this.findViewById(R.id.btnHide);
  40. // 使用这种方式创建MediaController将不会显示“快进”和“快退”两个按钮
  41. // mediaController = new MediaController(this,false);
  42. mediaController = new MediaController(this);
  43. //File videoFile = new File("/mnt/sdcard/movie.3gp");
  44. File videoFile = new File("/mnt/sdcard/vid320X240.3gp");
  45. // 先判断这个文件是否存在
  46. if (videoFile.exists()) {
  47. System.out.println("文件存在");
  48. videoView.setVideoPath(videoFile.getAbsolutePath());
  49. System.out.println(videoFile.getAbsolutePath());
  50. // 设置VideView与MediaController建立关联
  51. videoView.setMediaController(mediaController);
  52. // 设置MediaController与VideView建立关联
  53. mediaController.setMediaPlayer(videoView);
  54. // 让VideoView获取焦点
  55. videoView.requestFocus();
  56. // 开始播放
  57. videoView.start();
  58. } else {
  59. Toast.makeText(this, "文件不存在", Toast.LENGTH_LONG).show();
  60. }
  61. btnShow.setOnClickListener(new View.OnClickListener() {
  62. @Override
  63. public void onClick(View v) {
  64. if (mediaController != null) {
  65. // 使用0的话就一直显示直到调用hide()
  66. mediaController.show(0);
  67. }
  68. }
  69. });
  70. btnHide.setOnClickListener(new View.OnClickListener() {
  71. @Override
  72. public void onClick(View v) {
  73. if (mediaController != null) {
  74. mediaController.hide();
  75. }
  76. }
  77. });
  78. }
  79. }

附上VvideoView 和 MediaController的方法。

VideoView


常用方法:

方法名称

描述

public void setVideoPath (String path)

加载path路径的文件

public void setVideoURI (Uri uri)

加载uri所对应的视频

public void start ()

开始

public void seekTo (int msec)

定位

public void pause ()

暂停

public void stop()

停止

public void setMediaController (MediaController controller)

设置MediaController对象

关于MediaController类


这个类也是android.widget包下的,它是一个包含控件MediaPlayer多媒体播放的组件,它含有“播放”、暂停、”、“快倒”、“快进”和进步条的一个组件

构造方法

方法名称

描述

public MediaController (Context context, AttributeSet attrs)

通过Context对象和AttributeSet对象来创建MediaController对象

public MediaController (Context context, boolean useFastForward)

通过Context对象和指定是否允许用户控制进度。也就是是否有“快进”、“快退”按钮。如果设置为false就不会显示显示(如下图片一)

public MediaController (Context context)

通过Context来创建MediaController对象

常用方法

方法名称

描述

public void hide()

设置隐藏MediaController

public void show()

设置显示MediaController

public void show(int timeout)

设置MediaController显示的时间以毫秒计算。如果设置为0则一直到调用hide()方法才隐藏

public void setMediaPlayer (MediaController.MediaPlayerControl player)

设置MediaPlayer使之与要绑定的控件绑定在一起其参数是一个MediaController.MediaPlayerControl
静态接口的对象,(而VideoView是MediaController.MediaPlayerControl静态接口的子实现类,这就使得我们可以更好的控制我们的视频播放进度)

videoview 播放视频的更多相关文章

  1. Android VideoView播放视频

    今天介绍一下Android的视频播放控件VideoView,下面介绍一下VideoView的使用步骤: 1.在界面布局中定义VideoView组件,或者在程序中创建VideoView组件. 2.调用V ...

  2. Android--使用VideoView播放视频

    承香墨影 Android--使用VideoView播放视频   前言   之前有讲过如何使用SurfaceView配合MediaPlayer播放视频,其实Android还为开发人员提供了另外一种更简单 ...

  3. 使用VideoView播放视频

    为了在Android应用中播放视频,Android提供了VideoView组件,它就是一个位于android.widget包下的组件,它的作用与ImageView类似,只是ImageView用于显示图 ...

  4. Android开发之使用VideoView播放视频

    Android提供了 VideoView组件.它的作用与ImageView类似,仅仅是ImageView用于显示图片.而VideoView用于播放视频. 使用VideoView播放视频的过程例如以下: ...

  5. android采用videoView播放视频(包装)

    //android播放视频.用法:于androidManifest.xml添加activity, // <activity android:name=".PlayVideo" ...

  6. Android 视频播放器 (一):使用VideoView播放视频

    一.简介 作为Android开发,我们不可避免的会接触到视频播放,VideoView做为最简单的播放器,我们是不应该不会的. 下面简单介绍一下VideoView: VideoView是使用MediaP ...

  7. VideoView播放视频——Android

    Android为开发人员提供了一种简单的播放视频媒体的方式,那就是VideoView,本篇博客就来讲讲VideoView如何播放视频,最后将以一个简单的Demo演示. VideoView VideoV ...

  8. Android中使用VideoView 播放视频

    VideoView一般结合MediaController类使用,它会提供一个友好的图形界面,通过该界面可以控制视频的播放 package com.test.videoview; import andr ...

  9. 【Android 多媒体应用】使用 VideoView 播放视频

    1.MainActivity.java import android.os.Bundle; import android.support.v7.app.AppCompatActivity; impor ...

随机推荐

  1. TCP的发送缓冲区和接收缓冲区

    TCP协议是作用是用来进行端对端数据传送的,那么就会有发送端和接收端,在操作系统有两个空间即user space和kernal space. 每个Tcp socket连接在内核中都有一个发送缓冲区和接 ...

  2. 类声明、类作用域、前向声明、this指针、嵌套类、PIMPL 技法 等

    一.类声明 //类是一种用户自定义类型,声明形式: class 类名称 {    public:              公有成员(外部接口)    private:              私有 ...

  3. 三维模型 DAE 导出格式结合 OpenGLES 要素浅析

    三维模型 DAE 导出格式结合 OpenGLES 要素浅析 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致&quo ...

  4. 在一个SQL Server表中一行的多个列找出最大值

    有时候我们需要从多个相同的列里(这些列的数据类型相同)找出最大的那个值,并显示 这里给出一个例子 IF (OBJECT_ID('tempdb..##TestTable') IS NOT NULL) D ...

  5. Phonegap创建项目语法

    1:在本地磁盘新建一个文件夹存放要开发的项目,比如在D盘建一个yun文件夹2 2:然后在dos系统下,d:命令进入d盘,cd yun进入yun文件夹, 3:然后phonegap create yun2 ...

  6. 禁止Chrome浏览器自动升级

    对于我们测试人员来说,浏览器自动升级是非常可怕的,浏览器的升级会导致出现各种bug,比如我们常用的Selenium,如果Chrome浏览器自动升级就会导致脚本出错,无法打开浏览器等等情况,对于这种情况 ...

  7. C++函数默认参数(转)

    在代码中使用到了函数的默认参数,在函数的定义和实现中都填写的默认参数,结果出现了错误: 代码: #ifndef FIRSTPAGE_H #define FIRSTPAGE_H #include < ...

  8. 一个很好用的系统管理的命令lsof(转载)

    最近发现LOSF 命令在系统管理方面特别有用,把我搜集的资料总结如下 1.当在lsof后边没有跟任何参数时,该命令将会列出当前系统中被所有进程打开的所有文件#lsof|nl #nl命令打印出行号 2. ...

  9. phoenix系统创建语句

    CREATE TABLE SYSTEM."CATALOG"( TENANT_ID VARCHAR NULL, TABLE_SCHEM VARCHAR NULL, TABLE_NAM ...

  10. 基于HTML5自定义文字背景生成QQ签名档

    分享一款利用HTML5实现的自定义文字背景应用,首先我们可以输入需要显示的文字,并且为该文字选择一张背景图片,背景图片就像蒙版一样覆盖在文字上.点击生成QQ签名档即可将文字背景融为一体生成另外一张图片 ...