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是MediaController.MediaPlayerControl静态接口的子实现类,这就使得我们可以更好的控制我们的视频播放进度) |
videoview 播放视频相关推荐
- Android--使用VideoView播放视频
VideoView VideoView,用于播放一段视频媒体,它继承了SurfaceView,位于"android.widget.VideoView",是一个视频控件. 既然是播放 ...
- 【Android】使用VideoView播放视频
9.2 MediaPlayer播放音频与视频 | 菜鸟教程本节引言: 本节带来的是Android多媒体中的--MediaPlayer,我们可以通过这个API来播放音频和视频 该类是Androd多媒体框 ...
- android 6 videoview,android VideoView播放视频-source
[实例简介]android VideoView播放视频-source [实例截图] [核心代码] package com.example.shenxiaolei.myapplication; impo ...
- android采用videoView播放视频(包装)
//android播放视频.用法:于androidManifest.xml添加activity, // <activity android:name=".PlayVideo" ...
- Android使用VideoView播放视频
1.流程 正常流程如下,但是一般使用MediaController类直接使用. 2.实例 https://www.bilibili.com/video/BV1jW411375J?p=150&s ...
- VideoView播放视频黑屏问题处理
前言 你又擦肩而过 你耳机听什么 能不能告诉我 --. 记得 我写给你的情书 都什么年代了 到现在我还在写着 总有一天总有一年会发现 有人默默的陪在你的身边 也许 我不该在你的世界 当你收到情书 也代 ...
- 多媒体——视频——利用视频视图VideoView播放视频
==================================================================================================== ...
- android播放器设置中文,Android 视频播放器 (一):使用VideoView播放视频
一.简介 作为Android开发,我们不可避免的会接触到视频播放,VideoView做为最简单的播放器,我们是不应该不会的. 下面简单介绍一下VideoView: • VideoView是使用Med ...
- Android VideoView 播放视频
目录 VideoView 简 介 播放 res/raw 目录下的文件 播放设备本地文件 Environment 类详解 播放网络在线视频 uses-permission 权限统计 VideoView ...
最新文章
- 动态规划练习2 [合唱队形]
- ios 查询mysql数据库操作系统_iOS数据库FMDB--增删改查(模糊查询)详细介绍
- 管道( Pipeline )模型--示例
- java对mysql查询_如何利用java对mysql数据库进行增删改查
- 微服务架构 —— 服务雪崩与容错方案
- react脚手架_react脚手架create-react-app安装与使用
- 双代号网络图节点时间参数_双代号网络图的绘制与6个时间参数的计算,一篇全学会!...
- java pdf转ofd
- 方寸间见万物灵机:我们在世界人工智能大会听到了哪些华为AI故事?
- ubuntu18.04修改ip地址
- pano2vr 笔记
- ios保存gif到相册_iOS如何保存下载GIF图片
- 万字干货!《增长黑客》背后的逻辑
- 加速ubuntu开机速度 【以后看】
- 开源IMDG之GridGain
- 经营十二条(学习总结)
- 国产国脑与腾讯会议配合挺默契
- 查询rssi指令_h3c无线控制器常用命令(wx)
- 服务器端解压rar文件多次失败问题解决
- Qt编写数据可视化大屏界面电子看板10-改造QCustomPlot
热门文章
- 存储过程debug值not a variable_C语言变量的存储类别
- java 消息队列_java消息队列
- python 人气高的项目_给大家推荐:五个Python小项目,Github上的人气很高的
- linux ajp集群,Linux下apache tomcat ajp_proxy 负载均衡+集群+session 复制
- python加密执行_如何在Python中执行PGP(生成密钥,加密/解密)
- Linux下的awk用法详解
- 技术分享:几种常见的JavaScript混淆和反混淆工具分析实战【转】
- 标准库中的智能指针shared_ptr
- JAVA-初步认识-第十一章-异常-概述
- 技术面试的时候应该了解公司点什么