2016-09-23 107 views
0

我最初将方向设置为AutoRotation,允许LandscapeRight和LandscapeLeft。在android中更改方向

Screen.orientation = ScreenOrientation.Portrait 

Screen.orientation = ScreenOrientation.AutoRotation 

当我改变Screen.orientation为纵向,恢复到自动旋转,屏幕保持肖像,直到我轮换了电话。

这个问题只发生在Android设备上。

回答

0

难道你不认为这是自然的行为?您将方向设置为纵向,手机进入纵向,然后您更改为自动旋转,现在将根据您如何握住设备来改变方向。它不会强制应用程序转到允许的自定义方向。它会留在那里,除非你旋转它。如果您希望立即更改方向,则需要明确将方向设置为特定值。 Read More

希望这有助于

0

这是你应该做的:

.Change肖像。

。当您决定更改回自动旋转时,请执行此操作。

。阅读当前方向(DeviceOrientation)。将其转换为ScreenOrientation然后将其分配给屏幕方向。

:你不应该Screen.orientation读取当前屏幕的方向。这是通过Input.deviceOrientation完成的。

这三个步骤放进代码:

Screen.orientation = ScreenOrientation.Portrait; 
Screen.orientation = ScreenOrientation.AutoRotation; 
Screen.orientation = DeviceToScreenOrientation(Input.deviceOrientation); 

DeviceToScreenOrientation功能转换Input.deviceOrientation/DeviceOrientation枚举Screen.orientation/ScreenOrientation枚举。

ScreenOrientation DeviceToScreenOrientation(DeviceOrientation dvceOr) 
{ 
    ScreenOrientation scrOr = ScreenOrientation.Unknown; 
    switch (dvceOr) 
    { 
     case DeviceOrientation.Unknown: 
      scrOr = ScreenOrientation.Unknown; 
      break; 

     case DeviceOrientation.Portrait: 
      scrOr = ScreenOrientation.Portrait; 
      break; 

     case DeviceOrientation.PortraitUpsideDown: 
      scrOr = ScreenOrientation.PortraitUpsideDown; 
      break; 

     case DeviceOrientation.LandscapeLeft: 
      scrOr = ScreenOrientation.LandscapeLeft; 
      break; 

     case DeviceOrientation.LandscapeRight: 
      scrOr = ScreenOrientation.LandscapeRight; 
      break; 

     //Don't know What Enum to use. Implement to match your need 
     case DeviceOrientation.FaceUp: 
      //scrOr = ? 
      break; 

     case DeviceOrientation.FaceDown: 
      //scrOr = ? 
      break; 
    } 
    return scrOr; 
} 

您可能需要切换步骤#2和#3