uni-app 安卓平板设置竖屏没有改变屏幕方向

发布于 1周前 作者 gougou168 来自 Uni-App

uni-app 安卓平板设置竖屏没有改变屏幕方向

操作步骤

uniapp开发安卓平板,使用plus.screen.lockOrientation('landscape-primary'); // 锁定横屏和plus.screen.lockOrientation('portrait-primary') // 锁定竖屏,竖屏效果只是页面调整了缩放,两侧留空。没有真正的调为竖屏

预期结果

安卓平板上,可以正常切换app的横竖屏展示,就像通过重力设置为竖屏那样

实际结果

安卓平板上修改为竖屏只是页面调整了缩放,两侧留空。没有真正的调为竖屏

bug描述

watchRouter() {  
    // 监听路由变化  
    const pages = getCurrentPages()  
    const currentPage = pages.length ? pages[pages.length - 1] : null  
    // console.log(pages)  
    if (currentPage) {  
        if (currentPage.route === Vue.prototype.currentRouter) {  
            return  
        } else {  
            Vue.prototype.currentRouter = currentPage.route  
        }  
    }  
    // #ifdef APP-PLUS  
    if (/offline|evaluation-language|evaluation-sensory-processing/.test(currentPage.route)) {  
        console.log('横屏')  
        plus.screen.unlockOrientation();  
        plus.screen.lockOrientation('landscape-primary'); // 锁定横屏  
    } else {  
        console.log('竖屏')  
        plus.screen.unlockOrientation();  
        plus.screen.lockOrientation('portrait-primary') // 锁定竖屏  
    }  
    // #endif  
},

在安卓平板上,横屏可以显示正常,而竖屏则不行,他应该把屏幕旋转为竖屏模式,可现在,只是调整了缩放,如图,两侧留空.在ios平板上正常

图片

开发环境信息

项目 信息
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win11
HBuilderX类型 正式
HBuilderX版本号 4.44
手机系统 Android
手机系统版本号 Android 14
手机厂商 小米
手机机型 redmi pad se
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

2 回复

这是平板系统适配做的特殊处理 ,其实已经是锁竖屏了


在处理 uni-app 中安卓平板设置竖屏但没有改变屏幕方向的问题时,通常涉及到几个关键步骤和配置。以下是一些可能的解决方案和相关的代码示例,这些示例假定你已经熟悉 uni-app 和相关配置文件的基本操作。

1. 检查 manifest.json 配置

首先,确保在 manifest.json 文件中正确设置了应用的方向。manifest.jsonuni-app 的全局配置文件。

{
  "mp-weixin": { // 示例平台配置,针对微信小程序
    "appid": "your-app-id",
    "setting": {
      "window": {
        "pageOrientation": "portrait" // 设置为竖屏
      }
    }
  },
  "app-plus": { // App平台配置
    "distribute": {
      "android": {
        "screenOrientation": "portrait" // 设置为竖屏
      }
    }
  }
}

2. 修改 AndroidManifest.xml

对于原生 Android 应用,你可能还需要修改 AndroidManifest.xml 文件来强制应用竖屏。这通常在 HBuilderX 打包后,手动或通过脚本修改生成的 AndroidManifest.xml

<activity
    android:name=".YourMainActivity"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    android:screenOrientation="portrait"> <!-- 强制竖屏 -->
    <!-- 其他配置 -->
</activity>

3. 使用 JavaScript 动态设置

在某些情况下,你可能需要在应用运行时动态设置屏幕方向。虽然这通常用于响应用户交互,但也可以尝试在应用启动时设置。

// 注意:这种方法可能不适用于所有情况,特别是当系统配置覆盖应用配置时
if (uni.getSystemInfoSync().platform === 'android') {
  // 尝试使用 uni-app 的 API 或原生插件来设置屏幕方向(如果可用)
  // 例如,使用第三方插件或原生代码桥接
}

注意uni-app 本身可能不直接支持在运行时动态改变屏幕方向,特别是当系统级设置(如设备旋转锁定)与应用设置冲突时。因此,依赖原生配置(如 AndroidManifest.xml)通常是更可靠的方法。

4. 清理和重建项目

在修改配置后,确保清理并重新构建你的项目。这包括清除 HBuilderX 的缓存和重新打包 APK。

结论

处理 uni-app 中安卓平板屏幕方向设置的问题通常涉及检查和修改多个配置文件。确保所有相关配置都正确无误,并考虑系统级设置可能覆盖应用级设置的情况。如果问题仍然存在,建议查阅 uni-app 的官方文档或社区论坛,寻找是否有已知的问题或更新的解决方案。

回到顶部