视频旋转最终章

前记

项目中有视频旋转的功能需求,当初重构的时候对视频这块不太熟,直接抄的原来项目中的,原来项目中使用的开源项目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默认竖屏


切换为横屏
当然也可以切换为横屏的反方向,具体代码不贴了

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 {
        //竖屏切换到其他方向
    }
}

后记

代码能用系统自带的尽量用系统自带的,少用库

你可能感兴趣的:(视频旋转最终章)