Android-->播放视频横竖屏切换的2种方式

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

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

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

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

1:系统自动处理

如果要让系统自动处理, 横竖屏界面, 只需要一个简单的配置:
这里写图片描述

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

注意:findViewById的时候, 要判断当前方向哦, 要不然会找不到id,因为xml不一样了.如图:
这里写图片描述
根据方向, 初始化不同的View

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

2:手动处理

当手机旋转后, 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扫码加群, 小伙伴们在等着你哦!

关注我的公众号, 每天都能一起玩耍哦!

已标记关键词 清除标记