-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静态接口的子实现类,这就使得我们可以更好的控制我们的视频播放进度)

最新文章

  1. angular2系列教程(六)两种pipe:函数式编程与面向对象编程
  2. hdu2662
  3. 关于MVC中Start.cs文件的作用
  4. App Transport Security has blocked a cleartext HTTP (http://)
  5. javascript photo http://www.cnblogs.com/5ishare/tag/javascript/
  6. codeforces 235 B. Let&#39;s Play Osu!
  7. BootStrap 智能表单系列 十 自动完成组件的支持
  8. PHP+Mysql————表单数据插入数据库及数据提取
  9. angular2 日期格式化
  10. CentOS 7 安装serverjre 9
  11. Java 链接SQL Server 数据库
  12. leetcode — binary-tree-inorder-traversal
  13. 分享Winform datagridview 动态生成中文HeaderText
  14. bootstrap实现checkbox全选、取消全选
  15. libnids关于计算校验和引起的抓不到包的现象的解决方法
  16. python抓取猫眼电影列表
  17. 在vsphere6.5启用Tesla K80
  18. 8个数据清洗Python代码,复制可用,最长11行 | 资源
  19. 2017/11/21 Leetcode 日记
  20. LeetCode 笔记系列11 First Missing Positive [为什么我们需要insight]

热门文章

  1. 摘:LIB和DLL的区别与在VC中的使用
  2. 在Quartus中如何使用TCL脚本文件配制管脚
  3. XML文件标签名一致,而属性值不同,如何遍历取值写法 摘录
  4. Overflow sort stage buffered data usage of 33554495 bytes exceeds internal limit of 33554432 bytes
  5. Selenium - 设置元素等待
  6. Ubuntu/Debian交叉编译安装ARM平台版本的ffmpeg
  7. 基于js全屏动画焦点图幻灯片
  8. lua工具库penlight--09技术选择
  9. C语言 &#183; 数对
  10. Android——Intent(意图)