surfaceview播放视频在一个新的窗口中实现全屏播放代码
时间: 2023-06-19 17:03:40 浏览: 195
你可以通过以下步骤在一个新的窗口中实现SurfaceView的全屏播放:
1. 创建一个新的Activity作为全屏播放的窗口。
2. 在该Activity的onCreate方法中,设置全屏显示并隐藏状态栏和导航栏。
```java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 隐藏状态栏和导航栏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
getSupportActionBar().hide();
// 加载布局文件
setContentView(R.layout.activity_fullscreen_player);
// 获取SurfaceView控件
mSurfaceView = findViewById(R.id.surface_view);
// 初始化MediaPlayer
mMediaPlayer = new MediaPlayer();
// 设置SurfaceView的持有者
mSurfaceView.getHolder().addCallback(this);
// 获取视频路径
Intent intent = getIntent();
String videoPath = intent.getStringExtra("video_path");
try {
// 设置视频文件的路径
mMediaPlayer.setDataSource(videoPath);
// 设置循环播放
mMediaPlayer.setLooping(true);
// 准备MediaPlayer
mMediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
}
```
3. 在onResume方法中,开始播放视频,并将SurfaceView与MediaPlayer关联起来。
```java
@Override
protected void onResume() {
super.onResume();
// 启动MediaPlayer
mMediaPlayer.start();
// 将SurfaceView与MediaPlayer关联起来
mMediaPlayer.setDisplay(mSurfaceView.getHolder());
}
```
4. 在onPause方法中,暂停视频播放并释放MediaPlayer。
```java
@Override
protected void onPause() {
super.onPause();
// 暂停MediaPlayer
mMediaPlayer.pause();
// 释放MediaPlayer
mMediaPlayer.release();
mMediaPlayer = null;
}
```
5. 在AndroidManifest.xml文件中,为该Activity设置启动模式为singleTask,以便在全屏播放时不会创建新的Activity实例。
```xml
<activity
android:name=".FullscreenPlayerActivity"
android:launchMode="singleTask"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
```
6. 在你的主Activity中,通过Intent传递视频文件的路径,并启动FullscreenPlayerActivity。
```java
Intent intent = new Intent(MainActivity.this, FullscreenPlayerActivity.class);
intent.putExtra("video_path", "/sdcard/video.mp4");
startActivity(intent);
```
7. 在FullscreenPlayerActivity中,你还可以添加其他控件,例如播放/暂停按钮、进度条等,以便更好地控制视频播放。
阅读全文