安卓 屏幕旋转
程序员文章站
2022-05-16 11:21:25
...
代码设置竖向旋转,横向拿着手机点击跳转之后先先横向显示界面然后自动旋转为竖向解决方法
清单文件里Activity添加 android:screenOrientation="nosensor" 属性
"unspecified":默认值 由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向.
"landscape":横屏显示(宽比高要长)
"portrait":竖屏显示(高比宽要长)
"user":用户当前首选的方向
"behind":和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)
"sensor":有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。
"nosensor":忽略物理感应器,这样就不会随着用户旋转设备而更改了("unspecified"设置除外)。
https://www.cnblogs.com/amyzhu/p/8271368.html
https://blog.csdn.net/xiao__ge/article/details/10107277
https://www.cnblogs.com/feng290802455/articles/4368771.html
http://www.mamicode.com/info-detail-473490.html
ActivityInfo属性值 含义
SCREEN_ORIENTATION_UNSET
SCREEN_ORIENTATION_UNSPECIFIED 默认值,系统根据方向感应自动选择屏幕方向
SCREEN_ORIENTATION_LANDSCAPE 正向横屏,显示的宽比高长(锁死为横屏方向,不再让方向感应起作用)
SCREEN_ORIENTATION_PORTRAIT 正向竖屏,显示的高比宽长(锁死为竖屏方向,不再让方向感应起作用)
SCREEN_ORIENTATION_USER 用户当前首选的方向
SCREEN_ORIENTATION_BEHIND 这个有点奇葩,它跟Activity堆栈中的下面一个Activity的方向一致
SCREEN_ORIENTATION_SENSOR 由设备的方向传感器决定,如果用户旋转设备,这屏幕就会横竖屏切换(这里要注意了:这个属性有些强悍。大家知道安卓手机上都有一个“屏幕旋转”按钮,有的也叫“锁定屏幕”随便什么名字不管了,这个设置里面的开关和Activity有密切关系。关闭它之后Activity界面就不能响应方向传感器了,打开它才会恢复正常,挺合理的一个功能,让决定权放在用户手中。可一旦你设置了这个属性,无论用户怎么设置自己的手机上的“屏幕旋转”按钮,打开也好,关闭也好,Activity界面都会响应方向传感器的,会随着用户手持手机的方向自动变化,这就让用户有点奇怪。)
SCREEN_ORIENTATION_NOSENSOR 忽略物理方向传感器,这样就不会随着用户旋转设备而横竖屏切换了(这里有个坑:如果用户横屏拿着手机进行播放,界面也是横屏的,一旦设置了这个属性之后,手机界面会先变换到竖屏,然后才会锁死方向传感器)
SCREEN_ORIENTATION_SENSOR_LANDSCAPE 横屏,和上面它“爸爸”SENSOR一样强悍,无视用户手机设置的“屏幕旋转”按钮开关,直接根据方向传感器来切换正反向横屏,但是不会切换到竖屏
SCREEN_ORIENTATION_SENSOR_PORTRAIT 竖屏,和上面它“爸爸”SENSOR一样强悍,无视用户手机设置的“屏幕旋转”按钮开关,直接根据方向传感器来切换正反向竖屏,不会切换到横屏
SCREEN_ORIENTATION_REVERSE_LANDSCAPE 反向横屏,横屏分正向横屏(靠左手方向横屏)和反向横屏(靠右手方向横屏)
SCREEN_ORIENTATION_REVERSE_PORTRAIT 反向竖屏,就是和正常竖着拿手机相反,竖着掉了个个
SCREEN_ORIENTATION_FULL_SENSOR
SCREEN_ORIENTATION_USER_LANDSCAPE
SCREEN_ORIENTATION_USER_PORTRAIT
SCREEN_ORIENTATION_FULL_USER
SCREEN_ORIENTATION_LOCKED 锁死用户当前屏幕,方向传感器不生效(这里也有一个坑,低版本不生效,如vivo4.1,你如果使用这个属性来锁定屏幕,它会直接变回到竖屏
作者:SHERLOCKvv
链接:https://www.jianshu.com/p/dd53094b580a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
代码设置Activity方向
/**
* @param context 上下文
* @param isVertical 是否为竖屏 T:强制竖屏F:强制横屏 baseActivityOnCreat方法调用
*/
public void setVerticalScreen(Context context, boolean isVertical) {
((AppCompatActivity) context).setRequestedOrientation(isVertical ? ActivityInfo.SCREEN_ORIENTATION_PORTRAIT : ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
推荐阅读:
上一篇: RadioButton点击一次一直再次点击不起作用
下一篇: 安卓日志埋点