Activity的横竖屏切换其实很简单, 如果你的Activity没有声明android:configChanges, 那么Activity的方向就会随着手机的旋转而旋转. (手机需要开启自动旋转功能, 通常在手机的顶部通知栏中)

本来这样就搞定了, 但是….之所以需要自己控制, 是因为横屏竖屏时, 见面的显示需要有所不同.
才需要针对做出处理.

接下来, 就教大家2种界面处理的方式:

为了更好的用户体验, 请在Activity中加上属性android:configChanges="orientation|screenSize", 防止手机旋转时, Activity被重建.

1:系统自动处理

如果要让系统自动处理, 横竖屏界面, 只需要一个简单的配置:

android 切换 横屏 竖屏 安卓横屏竖屏切换_方向旋转

创建一个 layout-land资源文件夹, 里面的xml会在手机横屏时, 自动调用. 其他代码不变. 就完成了界面切换.

注意:findViewById的时候, 要判断当前方向哦, 要不然会找不到id,因为xml不一样了.如图:

android 切换 横屏 竖屏 安卓横屏竖屏切换_视频_02


根据方向, 初始化不同的View

注意:当你调用setContentView之后, 所有的View, 都已经重新创建了.
这样会出现一个小问题: 就是视频播放的进度会丢失,此时就需要保存视频播放进度, 方向切换后seekTo就行了.

2:手动处理

当手机旋转后, Activity会执行onConfigurationChanged方法:

@Override
 public void onConfigurationChanged(Configuration newConfig) {
     super.onConfigurationChanged(newConfig);
     initView();
 }

只需要在这个方法中, 控制想要显示, 或者 想要隐藏的View.

android 切换 横屏 竖屏 安卓横屏竖屏切换_android 切换 横屏 竖屏_03

想这样, 手动控制隐藏跟显示.

好处在于:
1. layout-land资源文件夹, 不需要, 但是最主要的xml, 要包含横竖屏所有的View才行.
2. 不需要在手机选装之后重新调用setContentView了, 因为用之前在onCreate中设置的就行了.
3. 视频的进度自动保存了, 这一条可能是作用最大的了.