Android VideoView
这两天公司要让做一个播放视频的小Demo,于是网上学习了下VideoView的使用方法。
先看布局文件,很简单 就是一个VideoView和两个ImageView
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 tools:context="${relativePackage}.${activityClass}" > 6 7 <VideoView 8 android:id="@+id/videoView1" 9 android:layout_width="match_parent" 10 android:layout_height="500dp" 11 android:layout_alignParentLeft="true" 12 android:layout_alignParentTop="true" /> 13 14 <ImageView 15 android:id="@+id/image1" 16 android:layout_width="160dp" 17 android:layout_height="140dp" 18 android:layout_below="@id/videoView1" 19 android:src="@drawable/ic_launcher" /> 20 21 <ImageView 22 android:layout_width="160dp" 23 android:layout_height="140dp" 24 android:layout_below="@id/videoView1" 25 android:layout_toRightOf="@id/image1" 26 android:src="@drawable/ic_launcher" /> 27 28 </RelativeLayout>
然后是MainActivity
这里面有一个搜索内存文件的方法
1 package com.nick.videodemo; 2 3 import java.io.File; 4 5 import android.app.Activity; 6 import android.media.MediaPlayer; 7 import android.media.MediaPlayer.OnCompletionListener; 8 import android.media.MediaPlayer.OnPreparedListener; 9 import android.os.Bundle; 10 import android.os.Environment; 11 import android.widget.MediaController; 12 import android.widget.VideoView; 13 14 public class MainActivity extends Activity { 15 16 private VideoView mVideoView; 17 MediaController mediaController; 18 private File file; 19 private String key = "test.mp4"; // 关键字 20 private File file1; 21 private String pathString; 22 23 @Override 24 protected void onCreate(Bundle savedInstanceState) { 25 super.onCreate(savedInstanceState); 26 setContentView(R.layout.activity_main); 27 mVideoView = (VideoView) findViewById(R.id.videoView1); 28 mediaController = new MediaController(this); 29 mVideoView.setMediaController(mediaController); 30 file = new File(Environment.getExternalStorageDirectory().getPath()); 31 toSearchFiles(file); 32 file1 = new File(pathString); 33 if (file1.exists()) { 34 mVideoView.setVideoPath(file1.getAbsolutePath()); 35 mediaController.setMediaPlayer(mVideoView); 36 mVideoView.requestFocus(); 37 mVideoView.start(); 38 mVideoView.setOnPreparedListener(new OnPreparedListener() { 39 40 @Override 41 public void onPrepared(MediaPlayer mp) { 42 mp.start(); 43 mp.setLooping(true); 44 } 45 }); 46 mVideoView.setOnCompletionListener(new OnCompletionListener() { 47 48 @Override 49 public void onCompletion(MediaPlayer mp) { 50 mVideoView.setVideoPath(file1.getAbsolutePath()); 51 mVideoView.start(); 52 } 53 }); 54 } 55 } 56 57 /** 58 * 遍历 Files 59 * 60 * @param file 61 */ 62 public void toSearchFiles(File file) { 63 File[] files = file.listFiles(); 64 for (File tf : files) { 65 if (tf.isDirectory()) { 66 toSearchFiles(tf); 67 } else { 68 try { 69 if (tf.getName().indexOf(key) > -1) { 70 pathString = tf.getPath(); 71 } 72 } catch (Exception e) { 73 } 74 } 75 } 76 } 77 }
mediaController = new MediaController(this); 是设置播放时候的控制器,比如快进暂停等。
这里面最主要的代码还是
34 mVideoView.setVideoPath(file1.getAbsolutePath());
35 mediaController.setMediaPlayer(mVideoView);
36 mVideoView.requestFocus();
37 mVideoView.start();
这个是把文件的路径赋给VideoView然后让mediacontroller控制这个VideoView,后面使其多的焦点并播放。
循环播放:
46 mVideoView.setOnCompletionListener(new OnCompletionListener() { 47 48 @Override 49 public void onCompletion(MediaPlayer mp) { 50 mVideoView.setVideoPath(file1.getAbsolutePath()); 51 mVideoView.start(); 52 } 53 }); 54 }
这个是给VideoView设置播放完成后的监听器,如果播放完成则重新开始。
上面就是简单地VideoView的使用方法,记录下方便以后学习和使用。