前记
项目中有视频旋转的功能需求,当初重构的时候对视频这块不太熟,直接抄的原来项目中的,原来项目中使用的开源项目RotateLayout,效果还行,就是实现起来写了一大坨代码,后来重做了一次发现系统原生的视频旋转实现效果真是比他好太多。
解决方案
由于全屏要去除状态栏和ActionBar,所以还的了解下隐藏/显示状态栏的代码
隐藏状态栏
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN, WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
显示状态栏
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
配置Activity
主要配置configChanges属性,screenOrientation默认竖屏
<activity
android:name=".mvp.videoplay.v.VideoPlayActivity"
android:configChanges="orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateAlwaysHidden" />
切换为横屏
当然也可以切换为横屏的反方向,具体代码不贴了
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
切换为竖屏
当然也可以切换为竖屏的反方向,具体代码不贴了
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
处理转屏后的事件
重写onConfigurationChanged,改变播放器的尺寸
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
//横屏切换到竖屏
} else {
//竖屏切换到其他方向
}
}
后记
代码能用系统自带的尽量用系统自带的,少用库