android设置竖屏仍然跟随屏幕旋转怎么办

如题所问,我最近遇到一个bug,就是设置了摇感,然后有用户反馈说设置了手机下拉的系统设置-屏幕旋转-关闭。然后屏幕还是会旋转的问题。

首先,我们先从如何设置横竖屏了解下好了

设置横屏和竖屏的方法:

方法一:在AndroidManifest.xml中配置

如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性,他有以下几个参数:

"unspecified":默认值 由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向.

"landscape":横屏显示(宽比高要长)

"portrait":竖屏显示(高比宽要长)

"user":用户当前首选的方向

"behind":和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)

"sensor":有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。

"nosensor":忽略物理感应器,这样就不会随着用户旋转设备而更改了("unspecified"设置除外)。

方法二:在java代码中设置

设置横屏代码:setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//横屏

设置竖屏代码:setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏

因为横屏有两个方向的横法,而这个设置横屏的语句,如果不是默认的横屏方向,会把已经横屏的屏幕旋转180°。

所以可以先判断是否已经为横屏了,如果不是再旋转,不会让用户觉得转的莫名其妙啦!代码如下:

复制代码
if(this.getResources().getConfiguration().orientation==Configuration.ORIENTATION_PORTRAIT){
   setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}

是吧,设置的无非就这两种方法。但是搜索的方法千篇一律都是差不多的。然后我设置的是"sensor"。然后也不懂问题出在了哪里,没办法只能继续去找资料看看。或许有更多的可能性没考虑到,结果在一篇文章中找到了。

原来就是方向传感器决定的,它没办法随系统设置的旋转。优先级比较高吧。吐了呀!然后我就直接把清单文件的 android:screenOrientation 属性删了。用默认的属性或者改成 android:screenOrientation="unspecified" 。问题就解决了。

当然了还有标题出现的这个问题,就是设置竖屏仍然跟随屏幕旋转,可能需要你细心的找找你设置的方法一或者方法二哪一步设置错了。或者代码设置错了。毕竟慢工出细活,要细心才不容易出错。

嗯嗯,还有就是遇到了个问题:如何判断是否开启自动旋转。下面就来分享一下方法:系统是否允许自动旋转屏幕的方法

复制代码
    /**
     * 系统是否允许自动旋转屏幕
     */
    public static boolean isAutoRotateOn(Context context) {
        //获取系统是否允许自动旋转屏幕
        return (android.provider.Settings.System.getInt(context.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0) == 1);
    }

之前有查阅的如下:

Activity手动设置横竖屏展示之后继续保持横竖屏自动切换 - 简书

安卓 屏幕旋转 - 自由资讯

android设置横屏和竖屏的方法-腾讯云开发者社区-腾讯云

相关推荐
xiangzhihong81 小时前
使用Universal Links与Android App Links实现网页无缝跳转至应用
android·ios
车载应用猿1 小时前
基于Android14的CarService 启动流程分析
android
没有了遇见2 小时前
Android 渐变色实现总结
android
雨白5 小时前
Jetpack系列(四):精通WorkManager,让后台任务不再失控
android·android jetpack
mmoyula7 小时前
【RK3568 驱动开发:实现一个最基础的网络设备】
android·linux·驱动开发
sam.li7 小时前
WebView安全实现(一)
android·安全·webview
移动开发者1号8 小时前
Kotlin协程超时控制:深入理解withTimeout与withTimeoutOrNull
android·kotlin
程序员JerrySUN8 小时前
RK3588 Android SDK 实战全解析 —— 架构、原理与开发关键点
android·架构
移动开发者1号9 小时前
Java Phaser:分阶段任务控制的终极武器
android·kotlin
哲科软件17 小时前
跨平台开发的抉择:Flutter vs 原生安卓(Kotlin)的优劣对比与选型建议
android·flutter·kotlin