如何在 UWP 应用程序中锁定平板电脑屏幕旋转?
How to lock tablet screen rotation in UWP app?
我希望我的 UWP 应用 运行 在 windows 10 上仅支持横向,但这是一个问题。
首先我提出了这个问题:link
GitHub 中的这个示例工作正常,然后我尝试使用复选框设置方向,当我这样设置方向时:
DisplayOrientations orientations = DisplayOrientations.Landscape;
DisplayInformation.AutoRotationPreferences = orientations;
它也有效。太好了。
但是这里有一个问题。如果您尝试按“开始”暂停应用程序并再次按它以恢复应用程序,所有旋转首选项都将设置为默认设置。它的工作方式类似于重置旋转首选项。
我试过设置Suspending方法,但是没用。尝试使用调试器,但没有它,这是行不通的。在清单文件中设置 "Supported rotations" 和 "Lock Screen" 声明也不起作用。
有人可以帮助我吗?
一些有用的链接:
Create Windows apps, App lifecycle, Display orientation sample.
如果在 Package.appxmanifest(双击/横向)中设置此项在平板电脑模式下不够,那么您可以尝试在应用 恢复 时进行设置。
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
Application.Current.Resuming += Application_Current_Resuming;
}
private async void Application_Current_Resuming(object sender, object e)
{
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler(() =>
{
// Your code here
}));
}
}
如lokusking所说。
[DllImport("user32.dll", EntryPoint = "#2507")]
extern static bool SetAutoRotation(bool bEnable);
SetAutoRotation(false);
这里是.
我认为最好的解决方案是:
您可以在横向模式下锁定应用程序,例如:
Windows.Graphics.Display.DisplayInformation.AutoRotationPreferences = Windows.Graphics.Display.DisplayOrientations.Landscape;
然后当你想return自动旋转给用户使用下面的代码:
Windows.Graphics.Display.DisplayInformation.AutoRotationPreferences = Windows.Graphics.Display.DisplayOrientations.Landscape | Windows.Graphics.Display.DisplayOrientations.LandscapeFlipped
| Windows.Graphics.Display.DisplayOrientations.None | Windows.Graphics.Display.DisplayOrientations.Portrait | Windows.Graphics.Display.DisplayOrientations.PortraitFlipped;
此致
我希望我的 UWP 应用 运行 在 windows 10 上仅支持横向,但这是一个问题。 首先我提出了这个问题:link
GitHub 中的这个示例工作正常,然后我尝试使用复选框设置方向,当我这样设置方向时:
DisplayOrientations orientations = DisplayOrientations.Landscape;
DisplayInformation.AutoRotationPreferences = orientations;
它也有效。太好了。
但是这里有一个问题。如果您尝试按“开始”暂停应用程序并再次按它以恢复应用程序,所有旋转首选项都将设置为默认设置。它的工作方式类似于重置旋转首选项。
我试过设置Suspending方法,但是没用。尝试使用调试器,但没有它,这是行不通的。在清单文件中设置 "Supported rotations" 和 "Lock Screen" 声明也不起作用。 有人可以帮助我吗?
如果在 Package.appxmanifest(双击/横向)中设置此项在平板电脑模式下不够,那么您可以尝试在应用 恢复 时进行设置。
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
Application.Current.Resuming += Application_Current_Resuming;
}
private async void Application_Current_Resuming(object sender, object e)
{
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler(() =>
{
// Your code here
}));
}
}
如lokusking所说。
[DllImport("user32.dll", EntryPoint = "#2507")]
extern static bool SetAutoRotation(bool bEnable);
SetAutoRotation(false);
这里是
我认为最好的解决方案是: 您可以在横向模式下锁定应用程序,例如:
Windows.Graphics.Display.DisplayInformation.AutoRotationPreferences = Windows.Graphics.Display.DisplayOrientations.Landscape;
然后当你想return自动旋转给用户使用下面的代码:
Windows.Graphics.Display.DisplayInformation.AutoRotationPreferences = Windows.Graphics.Display.DisplayOrientations.Landscape | Windows.Graphics.Display.DisplayOrientations.LandscapeFlipped
| Windows.Graphics.Display.DisplayOrientations.None | Windows.Graphics.Display.DisplayOrientations.Portrait | Windows.Graphics.Display.DisplayOrientations.PortraitFlipped;
此致