8.1.0中的Android屏幕方向问题

时间:2018-03-15 06:40:04

标签: cordova cordova-plugins android-orientation android-8.1-oreo

我在Android OS 8.1.0中遇到问题

  • 开始一个肖像活动(清单上的肖像声明)
  • 启动横向活动(横向声明在清单上)
  • 完成横向活动
  • 纵向活动再次显示,但方向开始翻转:首先是纵向模式,然后是横向模式,最后是纵向再次。

我在使用操作系统版本8.1.0以后的谷歌像素2 xl设备中观察到此问题(Android P开发者预览1中也存在问题)

我看到有人在Google群组中发帖

https://issuetracker.google.com/issues/69168442

但没有得到任何修复,我该如何解决这个问题。?

我的应用程序是混合应用程序(cordova),我也尝试在本机android中复制问题,但在本机android示例应用程序中没有问题

1 个答案:

答案 0 :(得分:0)

是的,这是Android 8.1 OS版本中的问题。由于这已经过时了。我们可以解决这些问题。在此特定的API级别中,Android OS可能会存储最新的方向值并将其应用于所有屏幕,直到上一个屏幕或该特定屏幕被破坏为止。因此,解决此类问题的方法是在返回屏幕之前更改方向。 例如: 如果ScreenA处于纵向模式,而ScreenB处于横向模式,并且如果将屏幕移至“横向”的ScreenB,并且如果返回到ScreenA而又不取消ScreenB(还原ScreenA),则ScreenA在“横向”中也是可见的。 要解决此问题,请在ScreenB的onPause()或OnStop()中强制将ScreenA的方向更改为纵向,以恢复ScreenA。

if (android.os.Build.VERSION.SDK_INT >= 27) {
         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

after this call, ScreenA will be in portrait. Also, in onResume() of ScreenB,

if (android.os.Build.VERSION.SDK_INT >= 27) {
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}