【问题标题】:How to lock tablet screen rotation in UWP app?如何在 UWP 应用中锁定平板电脑屏幕旋转?
【发布时间】:2018-11-01 04:39:56
【问题描述】:

我希望我的 UWP 应用在 Windows 10 上运行,仅支持横向方向,但这是一个问题。 首先我提出了这个问题:link

这个来自 GitHub 的例子工作正常,然后我尝试用复选框设置方向,当我像这样设置方向时:

DisplayOrientations orientations = DisplayOrientations.Landscape;
DisplayInformation.AutoRotationPreferences = orientations;

它也有效。太好了。

但是这里有个问题。如果您尝试按开始暂停应用程序并再次按它以恢复应用程序,所有旋转首选项都将设置为默认值。它的作用类似于重置旋转首选项。

我尝试设置 Suspending 方法,但它不起作用。尝试使用调试器,没有它,这不起作用。在清单文件中设置“支持的旋转”和“锁定屏幕”声明也不起作用。 有人可以帮帮我吗?

【问题讨论】:

  • 看看this有没有帮助

标签: c# uwp screen-orientation windows-10-universal


【解决方案1】:

就像lokusking 所说的那样。

[DllImport("user32.dll", EntryPoint = "#2507")]
extern static bool SetAutoRotation(bool bEnable);

SetAutoRotation(false);

这是link

【讨论】:

  • 根据对该链接的评论:“此功能在任何地方都没有记录或支持。它不会通过商店认证甚至任何类型的 Win32 认证。请不要使用它(永远)。MSFT保留随时删除它的权利”感觉像是不安全的黑客攻击。
【解决方案2】:

一些有用的链接: 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
        }));
    }
}

【讨论】:

  • 这行不通。将断点放入Application_Current_Resuming,只是还没有被调用。
  • 您尝试过显示方向示例吗?
  • 是的,我试过了。我尝试将方法添加到Application.Current.Resuming。但是当我按下 Start 时没有调用 Resuming 方法。
  • 您应该真正阅读链接应用程序生命周期。这还取决于您暂停的页面。这只是 MainPage 的示例。你也可以把 this.Resuming += App_Resuming;在 App.xaml.cs 的 App() 构造函数中,但是如果您正在使用多个视图,您还有更多事情要做..
  • 你先挂起再恢复(运行后Visual Studio顶部的生命周期事件)..
【解决方案3】:

我认为最好的解决方案在这里: 您可以将应用锁定为横向模式,例如:

Windows.Graphics.Display.DisplayInformation.AutoRotationPreferences = Windows.Graphics.Display.DisplayOrientations.Landscape;

然后,当您想将自动旋转返回给用户时,请使用以下代码:

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;

问候

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-17
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    相关资源
    最近更新 更多