问题描述
使用surfaceview结合mediaplayer创建一个视频播放器时,有两个问题:
1、Activity默认是有标题栏和状态栏的,需要改成全屏,要注意该两处地方:
(1)Androidmanifest.xml中application的 theme主题要选择是Notitle的,如
Theme.MaterialComponents.Light.NoActionBar
(2)Activity的OnCreate中要加入
// 隐藏标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
// 隐藏状态栏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
2、屏幕旋转时,Activity和SurfaceView默认都会销毁重新创建,造成播放视频中断或不出画面;这个时候需要让Activity旋转或者大小变化时,不销毁重新创建,方法就是在Activity的属性里面配置如下参数:
<activity
android:name=".MainActivity"
android:configChanges="orientation|screenSize"
.......
</activity>
说明:修改后,屏幕旋转过程中,只有SurfaceHolder.Callback的surfaceChanged函数会回调上来,其他回调函数都不会触发
@Override
public void surfaceChanged(@NonNull SurfaceHolder surfaceHolder, int i, int i1, int i2) {
Log.e(TAG, "surfaceChanged: " );
}