2016-09-23 3 views
0

Я установил ориентацию в AutoRotation изначально, разрешенную LandscapeRight и LandscapeLeft.изменить ориентацию в android

Screen.orientation = ScreenOrientation.Portrait 

Screen.orientation = ScreenOrientation.AutoRotation 

Когда я изменяю Screen.orientation на портрет и резюме автоповорота, экран держать портрет, пока я не ротацию телефона.

Эта проблема возникает только на устройстве Android.

ответ

0

Вам не кажется, что это естественное поведение? вы устанавливаете ориентацию на портрет, телефон переходит на портрет, затем вы переключаетесь на авторотацию, теперь это изменит ориентацию в соответствии с тем, как вы держите устройство. он не заставит приложение перейти к разрешенным ориентациям для авторотации. Он останется там, если вы не повернете его. Вам нужно явно указать ориентацию на определенное значение, если вы хотите, чтобы она немедленно изменилась. Read More

Надеется, что это помогает

0

Это то, что вы должны сделать:

.Кнопка к портрету.

. Когда вы решите вернуться к авторотации, сделайте это.

. Прочитайте текущую ориентацию (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 ENUM.

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.

Смежные вопросы