videoview 播放视频
-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文件
- <?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:orientation="vertical" >
- <VideoView
- android:id="@+id/video"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent" />
- <Button
- android:id="@+id/btnShow"
- android:text="show"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- />
- <Button
- android:id="@+id/btnHide"
- android:text="hide"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- />
- </LinearLayout>
java 文件:
- /*package com.example.tstmediaplaycontrol;
- import android.os.Bundle;
- import android.app.Activity;
- import android.view.Menu;
- import android.view.MenuItem;
- import android.support.v4.app.NavUtils;
- public class MainActivity extends Activity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.activity_main, menu);
- return true;
- }
- }*/
- package com.example.tstmediaplaycontrol;
- import java.io.File;
- import android.app.Activity;
- import android.graphics.PixelFormat;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- import android.widget.MediaController;
- import android.widget.Toast;
- import android.widget.VideoView;
- public class MainActivity extends Activity {
- private VideoView videoView;
- private Button btnHide, btnShow;
- MediaController mediaController;
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- getWindow().setFormat(PixelFormat.TRANSLUCENT);
- setContentView(R.layout.activity_main);
- videoView = (VideoView) this.findViewById(R.id.video);
- btnShow = (Button) this.findViewById(R.id.btnShow);
- btnHide = (Button) this.findViewById(R.id.btnHide);
- // 使用这种方式创建MediaController将不会显示“快进”和“快退”两个按钮
- // mediaController = new MediaController(this,false);
- mediaController = new MediaController(this);
- //File videoFile = new File("/mnt/sdcard/movie.3gp");
- File videoFile = new File("/mnt/sdcard/vid320X240.3gp");
- // 先判断这个文件是否存在
- if (videoFile.exists()) {
- System.out.println("文件存在");
- videoView.setVideoPath(videoFile.getAbsolutePath());
- System.out.println(videoFile.getAbsolutePath());
- // 设置VideView与MediaController建立关联
- videoView.setMediaController(mediaController);
- // 设置MediaController与VideView建立关联
- mediaController.setMediaPlayer(videoView);
- // 让VideoView获取焦点
- videoView.requestFocus();
- // 开始播放
- videoView.start();
- } else {
- Toast.makeText(this, "文件不存在", Toast.LENGTH_LONG).show();
- }
- btnShow.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mediaController != null) {
- // 使用0的话就一直显示直到调用hide()
- mediaController.show(0);
- }
- }
- });
- btnHide.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mediaController != null) {
- mediaController.hide();
- }
- }
- });
- }
- }
附上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 播放视频的更多相关文章
- Android VideoView播放视频
今天介绍一下Android的视频播放控件VideoView,下面介绍一下VideoView的使用步骤: 1.在界面布局中定义VideoView组件,或者在程序中创建VideoView组件. 2.调用V ...
- Android--使用VideoView播放视频
承香墨影 Android--使用VideoView播放视频 前言 之前有讲过如何使用SurfaceView配合MediaPlayer播放视频,其实Android还为开发人员提供了另外一种更简单 ...
- 使用VideoView播放视频
为了在Android应用中播放视频,Android提供了VideoView组件,它就是一个位于android.widget包下的组件,它的作用与ImageView类似,只是ImageView用于显示图 ...
- Android开发之使用VideoView播放视频
Android提供了 VideoView组件.它的作用与ImageView类似,仅仅是ImageView用于显示图片.而VideoView用于播放视频. 使用VideoView播放视频的过程例如以下: ...
- android采用videoView播放视频(包装)
//android播放视频.用法:于androidManifest.xml添加activity, // <activity android:name=".PlayVideo" ...
- Android 视频播放器 (一):使用VideoView播放视频
一.简介 作为Android开发,我们不可避免的会接触到视频播放,VideoView做为最简单的播放器,我们是不应该不会的. 下面简单介绍一下VideoView: VideoView是使用MediaP ...
- VideoView播放视频——Android
Android为开发人员提供了一种简单的播放视频媒体的方式,那就是VideoView,本篇博客就来讲讲VideoView如何播放视频,最后将以一个简单的Demo演示. VideoView VideoV ...
- Android中使用VideoView 播放视频
VideoView一般结合MediaController类使用,它会提供一个友好的图形界面,通过该界面可以控制视频的播放 package com.test.videoview; import andr ...
- 【Android 多媒体应用】使用 VideoView 播放视频
1.MainActivity.java import android.os.Bundle; import android.support.v7.app.AppCompatActivity; impor ...
随机推荐
- FFMPEG音视频解码
文章转自:https://www.cnblogs.com/CoderTian/p/6791638.html 1.播放多媒体文件步骤 通常情况下,我们下载的视频文件如MP4,MKV.FLV等都属于封装格 ...
- 缺省模板参数(借助标准模板容器实现Stack模板)、成员模板、关键字typename
一.缺省模板参数 回顾前面的文章,都是自己管理stack的内存,无论是链栈还是数组栈,能否借助标准模板容器管理呢?答案是肯定的,只需要多传一个模板参数即可,而且模板参数还可以是缺省的,如下: temp ...
- 如何将.sof转换成.jic
因为不同版本的QUARTUS II可能界面稍有差异,因此就不做截图演示了,只说操作步骤: 1.通过综合生成包含FPGA配置数据的.sof文件 2.选择转换编程文件,菜单File->convert ...
- appium 1.6.3 + ios 10.2 + xcode 8.2.1 真机运行iphone app
appium命令行启动: appium --address "127.0.0.1" --session-override --pre-launch --debug-log-spac ...
- C union共用体
共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型.您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值.共用体提供了一种使用相同的内存位置的有效方式. 共用体定义: ...
- IOS基于XMPP协议开发--XMPPFramewok框架(一):基础知识
最近蘑菇街团队的TT的开源,使我对im产生了兴趣,然后在网上找到了XMPPFramework进行学习研究, 并写了以下系列教程供大家参考,有写的不对的地方,请大家多多包涵指正. 目录索引 IOS基于X ...
- hdoj4864 Task (贪心)
题目来源: 2014 Multi-University Training Contest 1--by FZU 题意:有N个机器和m个工作.机器和工作都有一个时间xi和价值yi,一个工作仅仅有满足xi和 ...
- Hadoop-2.2.0中文文档—— Shell命令
FS Shell 调用文件系统(FS)Shell命令应使用 bin/hadoop fs <args>的形式. 全部的的FS shell命令使用URI路径作为參数.URI格式是scheme: ...
- rabbitMQ之安装和配置(一)
前言 erlang是一门面向并发的编程语言,流行的消息队列rabbitMQ是基于erlang环境运行的: 下载安装erlang语言环境 源码安装 # 从官网下载,在任何目录下,使用root权限 wge ...
- svn add xxx.txt 提示A (bin) xxx.txt
[root@NGINX-APACHE-SVN iptables]# svn ci -m "add iptables.txt" Adding (bin) iptables/iptab ...