在 Android 中大多数的时候,大家都需要对于Activity 进行屏幕方向的竖屏限制(大部分的时候APP 都需要对于屏幕进行竖屏的限制),但是也有很多时候需要对于屏幕进行横屏操作(大部分的游戏都是使用的横屏的限制),但是对于视频而言横竖屏切换是不可避免的一个操作.那么,在这里我就为大家介绍一下,因为某些问题需要和之后的一些东西相关联,所以将横竖屏切换转换为多个版本进行介绍
Activity 的横屏/竖屏的使用方式
方式一:(清单文件配置)
在清单文件中对于Activity 加上 screenOrientation 的属性,对于screenOrientation 具有以下几个值
unspecified : 默认值,由系统显示方向,在不同的系统上可能会有所不同
landscape : 横屏方向,显示的宽比高长
portrait : 竖屏方向,显示的高比宽长
user : 用户当前首选的方向
behind : 跟activity堆栈中的下面一个activity的方向一致
sensor : 由设备的物理方向传感器决定,如果用户旋转设备,这屏幕就会横竖屏切换
nosensor : 忽略物理方向传感器,这样就不会随着用户旋转设备而横竖屏切换了(”unspecified”设置除外)
reverseLandscape : API 9 以上,反向横屏
reversePortrait : API 9 以上,反向竖屏
sensorLandscape : API 9 以上,横屏,但是可以根据 物理方向传感器来切换正反向横屏
sensorPortrait : API 9 以上,竖屏,但是可以根据 物理方向传感器来切换正反向竖屏
fullSensor : API 9 以上,上下左右四个方向,由物理方向传感器决定
locked : API 18 以上,锁死当前屏幕的方向
方式二:(java代码配置)
在Activity 的onCreate 的方法中调用 setRequestedOrientation 的方法进行配置横竖屏
需要注意的是:
setRequestedOrientation 方法需要在 setContentView 之前调用
其中:
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE : 竖屏
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT : 横屏
如果不配置,那么就是默认的,由系统显示方向
视频播放的时候根据按钮来判断是否是横屏/竖屏
在Activity 的 setScreenOrientation 方法中进行配置
代码:
@Override
public void setRequestedOrientation(int requestedOrientation) {
super.setRequestedOrientation( requestedOrientation );
if (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT == requestedOrientation){
//todo 当前屏幕是横屏
}else if (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE == requestedOrientation){
//todo 当前屏幕适说
}
}