帖子
帖子
用户
博客
课程
显示全部楼层
27
帖子
0
勋章
224
Y币

[superwebview] 在锁定竖屏下怎么判断用户实际屏幕是横屏还是竖屏

[复制链接]
发表于 2020-9-28 17:07:27
手机已经设置了锁定竖屏,那有什么办法能判断当前用户的手机是横屏还是竖屏状态?我想实现的功能是:根据手机旋转角度,自动设置横屏竖屏,就可以跳过手机的锁定竖屏了
75
帖子
0
勋章
657
Y币
还是看看config文件的配置里面有没有吧
27
帖子
0
勋章
224
Y币
剑灵游侠 发表于 2020-9-28 17:25
还是看看config文件的配置里面有没有吧

目前找不到apicloud有这个相关的功能,我打算监听deviceorientation事件,根据alpha、beta、gamma来判断应该横屏还是竖屏
75
帖子
0
勋章
657
Y币
config吧,里面好像有个配置是屏幕方向跟随系统的,你去看看
27
帖子
0
勋章
224
Y币
剑灵游侠 发表于 2020-9-28 17:55
config吧,里面好像有个配置是屏幕方向跟随系统的,你去看看

你还没理解我的问题。我的场景是:在手机设置了锁定竖屏(此时即使旋转屏幕,屏幕旋转事件也不会触发),也要能知道当前手机屏幕实际应该是横屏还是竖屏、向左横还是向右横。
171
帖子
3
勋章
2615
Y币
可可西里 发表于 2020-9-28 18:04
你还没理解我的问题。我的场景是:在手机设置了锁定竖屏(此时即使旋转屏幕,屏幕旋转事件也不会触发), ...


window.addEventListener("orientationchange", function() {
        alert(window.orientation);
}, false);
用这个就可以检测屏幕方向旋转
27
帖子
0
勋章
224
Y币
飞翔网络 发表于 2020-9-28 18:54
window.addEventListener("orientationchange", function() {
        alert(window.orientation);
}, f ...

问题就在于这里,手机设置了锁定竖屏,当你用手旋转屏幕的时候,不会触发此事件,而我还想计算出正确的orientation。目前能想到的就是根据alpha、beta、gamma三个值去计算,无奈知识不够,不会算
可以获取导航栏高度计算。旋转了方向导航栏的位置也会更改
27
帖子
0
勋章
224
Y币
微链科技 发表于 2020-9-29 09:33
可以获取导航栏高度计算。旋转了方向导航栏的位置也会更改

当前屏幕是竖屏,用户在旋转手机的时候我要主动调用方法,使屏幕变成横屏或者竖屏。你们都没有理解问题。正常情况下调用setScreenOrientation设置为auto,APP就可以跟随系统自动切换横竖屏。但是大多数情况下手机都会设置【锁定竖屏】,此时即使设置了屏幕方向auto,也不会旋转。我要解决的就是这个问题,因为apicloud没有提供这个能力,所以我想根据陀螺仪的原始数据来判断屏幕应该切换到横屏还是竖屏。这个使用场景多见视频播放页面和VR相关
27
帖子
0
勋章
224
Y币
剑灵游侠 发表于 2020-9-28 17:25
还是看看config文件的配置里面有没有吧

let orientation = prev = 'portrait_up';

    window.addEventListener('deviceorientation', function (e) {
      if (orientation == 'portrait_up') { // 当前是竖屏,屏幕在home键在上面
        if (e.gamma <= -30 && e.beta <= 15) {
          orientation = 'landscape_left';
        } else if (e.gamma >= 30 && e.beta <= 15) {
          orientation = 'landscape_right';
        } else {
          orientation = 'portrait_up';
        }
      } else if (orientation == 'landscape_left') { // 当前是横屏,屏幕在home键在左侧
        if ((e.gamma >= -15 && e.beta >= 15) || (e.gamma <= -30 && e.beta >= 45)) {
          orientation = 'portrait_up';
        }
      } else if (orientation == 'landscape_right') { // 当前是横屏,屏幕在home键在右侧
        if ((e.gamma <= 15 && e.beta >= 15)|| (e.gamma >= 30 && e.beta >= 45)) {
          orientation = 'portrait_up';
        }
      }

      test.innerHTML = '<pre>' + JSON.stringify({
        orientation: orientation,
        alpha: e.alpha,
        beta: e.beta,
        gamma: e.gamma
      }, null, 2) + '<\/pre>';

      if(prev != orientation){
        prev = orientation;
        api.setScreenOrientation({
            orientation: orientation
        });
      }
    }, false);
您需要登录后才可以回帖 登录

本版积分规则