Android开发之使用VideoView实现视频的横屏播放、去除边框

做项目需要播放一个引导视频,本以为很简单,结果动手时发现总有瑕疵,幸好有度娘,现把收获总结如下:

一、实现视频播放:

注明我这里要播放的是Android项目中的资源文件,而不是访问SD卡播放视频。

1.先把要播放的视频放到res/raw目录下

2.视频格式必须是Android支持的格式(3gp,mp4,wmv),据说swf不支持,暂未试过。并且视频文件命名不能有大写字母,必须是小写字母、数字或下划线。

3.布局文件中添加VideoView组件

4.创建个String类型对象保存uri

5.调用VideoView的setVideoURI方法设置URI,参数为上面的uri

6.调用start()方法播放。

代码如下:

布局文件中添加:

<VideoView
            android:id="@+id/video"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

Activity中设置:

private void playVideo() {
		video = (VideoView) findViewById(R.id.video);
		String uri = "android.resource://" + getPackageName() + "/" + R.raw.guide;
		video.setVideoURI(Uri.parse(uri));
		video.start();
	}

以上代码实现了视频的播放,但视频并没有按我们想的横屏、全屏播放,所以需要第二步:

二、视频全屏播放(去除底部出现的边框):

想要对VideoView进行参数配置,就需要用到setLayoutParams方法。但是查看API我们可以看到VideoView并没有这个方法,怎么办呢?

我们需要在布局文件中的VideoView组件外包裹一个布局,我这里用的是RelativeLayout,,其他的应该也可以:

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        <VideoView
            android:id="@+id/video"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </RelativeLayout>

添加后,就可以进行参数配置:

String uri = "android.resource://" + getPackageName() + "/" + R.raw.guide;
		video.setVideoURI(Uri.parse(uri));
		RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
				RelativeLayout.LayoutParams.FILL_PARENT,
				RelativeLayout.LayoutParams.FILL_PARENT);
		layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
		layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
		layoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
		layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
		video.setLayoutParams(layoutParams);
		video.start();

那四个addRule方法将边框都消除,LayoutParams构造方法实现全屏。

完成上一步后运行,发现虽然视频可以全屏,但显示完全失真,不是我们想要的效果,如果手机开启了自动转屏,我们会发现将手机转到横屏后视频的播放效果才是我们想要的。如何让视频在播放时就自动转到横屏播放呢?

三、设置视频横屏播放:

每个Activity是否允许转屏,当前显示方式是横屏还是竖屏,都可以通过在AndroidManifest.xml文件中设置:

比如我当前播放视频时在Splash这个activity中播放,就可以在她的标签中添加screenOrientation属性控制屏幕方向(landscape是横向,portrait是纵向)

<activity
            android:name="com.zsx.activity.Splash"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
            android:screenOrientation="landscape">

        </activity>

有些时候我们希望某些页面只有竖屏或者横屏,担心转屏后布局会变难看,就可以在响应的activity中设置这个属性,用户怎么转屏都不会再变了!哈哈

时间: 2024-08-27 05:08:26

Android开发之使用VideoView实现视频的横屏播放、去除边框的相关文章

Android开发之使用MediaRecorder录制视频

MediaRecorder除了可以用于录制音频,还可用于录制视频.关于MediaRecorder的详解大家可以参考<Android开发之MediaRecorder类详解>.使用MediaRecorder录制视频与录制音频的步骤基本相同.只是录制视频时不仅需要采集声音,还需要采集图像.为了让MediaRecorder录制时采集图像,应该在调用setAudioSource(int audio source)方法时再调用setVideoSource(int video source)方法来设置图像来

Android开发之使用VideoView播放视频

Android提供了 VideoView组件.它的作用与ImageView类似,仅仅是ImageView用于显示图片.而VideoView用于播放视频. 使用VideoView播放视频的过程例如以下: 1)        在界面布局文件里定义VideoView组件,或在程序中创建VideoView组件. 2)        调用VideoView的例如以下两个方法来载入指定视频. setVideoPath(String path):载入 path 文件所代表的视频. setVideoURI(Ur

Android开发之打开闪光灯录制视频

Android的SDK在线API上对录制视频的方法.步骤都写得非常清楚,但是如果没有一点思路,写起来也比较式费事.录制视频的全过程要打开闪光灯(可能是因为项目需要,或者特殊原因),则必须按照一定的顺序进行开关,毕竟容易出错.要实现录制的同时开启闪光灯也不难,官方API给出了一个大体的步骤.因为要采集点视频数据,临时写了个简单的Demo学习下,必要时再深度开发. 首先在工程中的AndroidManifest.xml中添加权限声明,因为要使用到摄像头,故需要添加Camera的相关权限,另外还需要写S

Android 开发知识小集

XML文件 xml其实是一个博大精深的东西呐.. 这里我就简单写一点,慢慢加: 关于color.xml,转载自:http://blog.sina.com.cn/s/blog_4e60b09d01015jcp.html <?xml version="1.0" encoding="utf-8" ?> <resources> <color name="white">#FFFFFF</color><!

android开发学习之音视频-VideoView

VideoView实际上是android SDK中封装好的一个用于播放视频的组件,使用步骤如下: 1.在布局文件中定义Video组件: 2.使用以下方法加载指定视频: 1)setVideoPath(String path) 2)setVideoURI(Uri uri) 3.调用Video的start().stop().pause()方法来控制视频播放.   例子如下: 布局文件 <?xml version="1.0" encoding="utf-8"?>

【视频】零基础学Android开发:蓝牙聊天室APP(一)

零基础学Android开发:蓝牙聊天室APP第一讲 1. Android介绍与环境搭建:史上最高效Android入门学习 1.1 Google的大小战略 1.2 物联网与云计算 1.3 智能XX设备 1.4 Android发展前景 1.5 Android企业需求与就业薪资 1.6 Android框架介绍 1.7 搭建Android开发环境 1.8 Android SDK文件夹具体解释 1.9 开发第一个App:HelloWorld 1.10 App应用程序文件夹具体解释 在线收看:http://

【视频】零基础学Android开发:蓝牙聊天室APP(三)

零基础学Android开发:蓝牙聊天室APP第三讲 3.1 ImageView.ImageButton控件详解 3.2 GridView控件详解 3.3 SimpleAdapter适配器详解 3.4 事件监听器:OnItemClickListener 3.5 输入和显示表情图像 在线收看:http://www.3g-edu.org/news/video023.htm 视频下载:http://pan.baidu.com/s/1kTmiNqf

【视频】零基础学Android开发:蓝牙聊天室APP(四)

零基础学Android开发:蓝牙聊天室APP第四讲 4.1 ListView控件的使用 4.2 BaseAdapter详解 4.3 ListView分布与滚动事件 4.4 ListView事件监听器:OnItemClickedListener 在线收看:http://www.3g-edu.org/news/video026.htm 视频下载:http://pan.baidu.com/s/1jGkjDGE

Android开发:实时处理摄像头预览帧视频------浅析PreviewCallback,onPreviewFrame,AsyncTask的综合应用(转)

原文地址:http://blog.csdn.net/yanzi1225627/article/details/8605061# 很多时候,android摄像头模块不仅预览,拍照这么简单,而是需要在预览视频的时候,能够做出一些检测,比如最常见的人脸检测.在未按下拍照按钮前,就检测出人脸然后矩形框标示出来,再按拍照.那么如何获得预览帧视频么? 只需要在Activity里继承PreviewCallback这个接口就行了.示例如下: public class RectPhoto extends Acti