Activity的横竖屏切换其实很简单, 如果你的Activity
没有声明android:configChanges
, 那么Activity的方向就会随着手机的旋转而旋转. (手机需要开启自动旋转
功能, 通常在手机的顶部通知栏中)
本来这样就搞定了, 但是….之所以需要自己控制, 是因为横屏
和竖屏
时, 见面的显示需要有所不同.
才需要针对做出处理.
接下来, 就教大家2种界面处理的方式:
为了更好的用户体验, 请在Activity中加上属性android:configChanges="orientation|screenSize"
, 防止手机旋转时, Activity被重建.
如果要让系统自动处理, 横竖屏界面, 只需要一个简单的配置:
创建一个 layout-land
资源文件夹, 里面的xml会在手机横屏时, 自动调用. 其他代码不变. 就完成了界面切换.
注意:findViewById
的时候, 要判断当前方向哦, 要不然会找不到id
,因为xml不一样了.如图:
根据方向, 初始化不同的View
注意:当你调用setContentView
之后, 所有的View
, 都已经重新创建了.
这样会出现一个小问题: 就是视频播放的进度会丢失,此时就需要保存视频播放进度, 方向切换后seekTo
就行了.
当手机旋转后, Activity
会执行onConfigurationChanged
方法:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
initView();
}
只需要在这个方法中, 控制想要显示, 或者 想要隐藏的View
.
想这样, 手动控制隐藏跟显示.
好处在于:
1. layout-land
资源文件夹, 不需要, 但是最主要的xml, 要包含横竖屏所有的View
才行.
2. 不需要在手机选装之后重新调用setContentView
了, 因为用之前在onCreate
中设置的就行了.
3. 视频的进度自动保存了, 这一条可能是作用最大的了.
源码地址:https://github.com/angcyo/VideoDemo
如果你想实现在列表中切换横竖屏
, 或者想使用ijkplayer
, 可以参考:https://github.com/xiaoyanger0825/NiceVieoPlayer
点此快速加群
请使用QQ扫码加群, 小伙伴们在等着你哦!
关注我的公众号, 每天都能一起玩耍哦!