使用VideoView全屏播放视频文件

来源:互联网 发布:淘宝刷单注意事项 编辑:程序博客网 时间:2024/05/17 17:45

最近在做一个app项目,涉及了图片和视频文件的预览功能,其中视频文件的预览采用的是android提供的VideoView组件,通过该组件实现视频播放比较简单,但是碰到了视频文件无法全屏播放的问题。下面对通过VideoView实现视频文件播放以及解决无法全屏播放的问题做个总结。

使用VideoView播放视频文件的步骤

  1. 在布局文件中创建VideoView组件
    <LinearLayout            android:id="@+id/id_preViewPanel"            android:layout_width="fill_parent"            android:layout_height="fill_parent"            android:orientation="vertical" >            <VideoView                android:id="@id/id_CameraPreView"                android:layout_width="wrap_content"                android:layout_height="wrap_content" >            </VideoView>        </LinearLayout>
  2. 然后在Activity中获取VideoView组件
  3. 用setVideoPath(String path)或setVideoURI(URI uri)方法加载要播放的视频资源
    @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_previewvideo);Intent intent = getIntent();String fileName = intent.getStringExtra(FILE_NAME);File imageFile = new File(fileName);if (!imageFile.exists()) {Log.d(TAG, "can\'t find video file, fileName:" + imageFile.toString());returnPrevious(RESULT_CANCELED);return;}//获取VideoView组件mVideoView = (VideoView)findViewById(R.id.id_CameraPreView);//通过setVideoPath()方法加载要播放的视频mVideoView.setVideoPath(imageFile.toString());}
  4. 最后调用start()方法播放视频<p name="code" class="html">//当Activity由暂停状态恢复为活动状态时调用protected void onResume() {//调用start()方法播放视频mVideoView.start();super.onResume();}</p>

实现视频文件全屏显示

过上述步骤即可实现播放视频文件的功能,但是播放时,视频文件往往无法全屏显示(视频文件完整显示了,但屏幕中会有一块空白区域),解决这个问题,需要我们自定义一个继承自VideoView的组件,并重写OnMeasure()方法。

  1. 首先实现一个继承自VideoView的MyVideo组件
    package com.supcon.scerms.media;import android.content.Context;import android.util.AttributeSet;import android.widget.VideoView;public class MyVideoView extends VideoView {public MyVideoView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}public MyVideoView(Context context, AttributeSet attrs) {super(context, attrs);}public MyVideoView(Context context) {super(context);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {// TODO Auto-generated method stubint width = getDefaultSize(0, widthMeasureSpec);int height = getDefaultSize(0, heightMeasureSpec);setMeasuredDimension(width, height);}}

  2. 将布局文件中android提供的VideoView组件替换为自定义的MyVideoView组件
    <LinearLayout            android:id="@+id/id_preViewPanel"            android:layout_width="fill_parent"            android:layout_height="fill_parent"            android:orientation="vertical" >            <com.supcon.scerms.media.MyVideoView                android:id="@id/id_CameraPreView"                android:layout_width="wrap_content"                android:layout_height="wrap_content" >            </com.supcon.scerms.media.MyVideoView>        </LinearLayout>




0 0
原创粉丝点击