在android中更改方向
问题描述:
我最初将方向设置为AutoRotation,允许LandscapeRight和LandscapeLeft。在android中更改方向
Screen.orientation = ScreenOrientation.Portrait
Screen.orientation = ScreenOrientation.AutoRotation
当我改变Screen.orientation为纵向,恢复到自动旋转,屏幕保持肖像,直到我轮换了电话。
这个问题只发生在Android设备上。
答
难道你不认为这是自然的行为?您将方向设置为纵向,手机进入纵向,然后您更改为自动旋转,现在将根据您如何握住设备来改变方向。它不会强制应用程序转到允许的自定义方向。它会留在那里,除非你旋转它。如果您希望立即更改方向,则需要明确将方向设置为特定值。 Read More
希望这有助于
答
这是你应该做的:
.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。