利用VideoView+MediaController来实现
具体代码如下
布局文件:(只设置宽和高属性为match_parent是不能充满父容器的,需要加上alignparent left right bottom top为true)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<VideoView
android:id="@+id/activity_opening_videoview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" />
</RelativeLayout>
activity代码:
Uri uri = Uri.parse("http://192.168.1.165:8082/upload/sysFile/4a28717cb428e2761c3001cd727c7c8d/4c45c07851ef95d49c8c5ba8269c33cc.mp4");
MediaController mediaController = new MediaController(this);
mediaController.setVisibility(View.GONE); //隐藏进度条
videoView.setMediaController(mediaController);
videoView.setVideoURI(uri);
videoView.requestFocus();
videoView.start(); //自动播放视频
循环播放:
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.setLooping(true);
}
});
VideoView的一些属性:
- int getCurrentPosition():获取当前播放的位置。
- int getDuration():获取当前播放视频的总长度。
- isPlaying():当前VideoView是否在播放视频。
- void pause():暂停
- void seekTo(int msec):从第几毫秒开始播放。
- void resume():重新播放。
- void setVideoPath(String path):以文件路径的方式设置VideoView播放的视频源。
- void setVideoURI(Uri uri):以Uri的方式设置VideoView播放的视频源,可以是网络Uri或本地Uri。
- void start():开始播放。
- void stopPlayback():停止播放。并释放资源
- setMediaController(MediaController controller):设置MediaController控制器。
- setOnCompletionListener(MediaPlayer.onCompletionListener l):监听播放完成的事件。
- setOnErrorListener(MediaPlayer.OnErrorListener l):监听播放发生错误时候的事件。
- setOnPreparedListener(MediaPlayer.OnPreparedListener l)::监听视频装载完成的事件。