-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文件

[cpp] view plaincopy
  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  文件:

[cpp] view plaincopy
  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播放视频

    VideoView VideoView,用于播放一段视频媒体,它继承了SurfaceView,位于"android.widget.VideoView",是一个视频控件. 既然是播放 ...

  2. 【Android】使用VideoView播放视频

    9.2 MediaPlayer播放音频与视频 | 菜鸟教程本节引言: 本节带来的是Android多媒体中的--MediaPlayer,我们可以通过这个API来播放音频和视频 该类是Androd多媒体框 ...

  3. android 6 videoview,android VideoView播放视频-source

    [实例简介]android VideoView播放视频-source [实例截图] [核心代码] package com.example.shenxiaolei.myapplication; impo ...

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

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

  5. Android使用VideoView播放视频

    1.流程 正常流程如下,但是一般使用MediaController类直接使用. 2.实例 https://www.bilibili.com/video/BV1jW411375J?p=150&s ...

  6. VideoView播放视频黑屏问题处理

    前言 你又擦肩而过 你耳机听什么 能不能告诉我 --. 记得 我写给你的情书 都什么年代了 到现在我还在写着 总有一天总有一年会发现 有人默默的陪在你的身边 也许 我不该在你的世界 当你收到情书 也代 ...

  7. 多媒体——视频——利用视频视图VideoView播放视频

    ==================================================================================================== ...

  8. android播放器设置中文,Android 视频播放器 (一):使用VideoView播放视频

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

  9. Android VideoView 播放视频

    目录 VideoView 简 介 播放 res/raw 目录下的文件 播放设备本地文件 Environment 类详解 播放网络在线视频 uses-permission 权限统计 VideoView ...

最新文章

  1. 动态规划练习2 [合唱队形]
  2. ios 查询mysql数据库操作系统_iOS数据库FMDB--增删改查(模糊查询)详细介绍
  3. 管道( Pipeline )模型--示例
  4. java对mysql查询_如何利用java对mysql数据库进行增删改查
  5. 微服务架构 —— 服务雪崩与容错方案
  6. react脚手架_react脚手架create-react-app安装与使用
  7. 双代号网络图节点时间参数_双代号网络图的绘制与6个时间参数的计算,一篇全学会!...
  8. java pdf转ofd
  9. 方寸间见万物灵机:我们在世界人工智能大会听到了哪些华为AI故事?
  10. ubuntu18.04修改ip地址
  11. pano2vr 笔记
  12. ios保存gif到相册_iOS如何保存下载GIF图片
  13. 万字干货!《增长黑客》背后的逻辑
  14. 加速ubuntu开机速度 【以后看】
  15. 开源IMDG之GridGain
  16. 经营十二条(学习总结)
  17. 国产国脑与腾讯会议配合挺默契
  18. 查询rssi指令_h3c无线控制器常用命令(wx)
  19. 服务器端解压rar文件多次失败问题解决
  20. Qt编写数据可视化大屏界面电子看板10-改造QCustomPlot

热门文章

  1. 存储过程debug值not a variable_C语言变量的存储类别
  2. java 消息队列_java消息队列
  3. python 人气高的项目_给大家推荐:五个Python小项目,Github上的人气很高的
  4. linux ajp集群,Linux下apache tomcat ajp_proxy 负载均衡+集群+session 复制
  5. python加密执行_如何在Python中执行PGP(生成密钥,加密/解密)
  6. Linux下的awk用法详解
  7. 技术分享:几种常见的JavaScript混淆和反混淆工具分析实战【转】
  8. 标准库中的智能指针shared_ptr
  9. JAVA-初步认识-第十一章-异常-概述
  10. 技术面试的时候应该了解公司点什么