[英]How to enable only landscape mode in a UWP app?
我已經在清單中指定為Landscape和LandscapeFlipped,我知道這只是一個偏好,除此之外,我在App.xaml.cs OnLaunched中添加了以下代碼。 但是,當在平板電腦上測試時,應用程序會回到縱向模式。
DisplayInformation.AutoRotationPreferences =
DisplayOrientations.Landscape | DisplayOrientations.LandscapeFlipped;
還有什么替代方法我可以在模擬器而不是實際的平板電腦/設備中測試它嗎?
提前致謝。
由於我的評論幫助你將其添加為答案
解
[DllImport("user32.dll", EntryPoint = "#2507")]
extern static bool SetAutoRotation(bool bEnable);
SetAutoRotation(false);
首先注意:DisplayInformation.AutoRotationPreferences提供與Win32 SetDisplayAutoRotationPreferences函數大致相同的功能,除了DisplayInformation一個用於UWP而Win32一個用於Win32應用程序(例如使用HWND)。 您不能將UWP API用於Win32應用程序,反之亦然。
UWP API僅適用於Windows 10上的設備處於平板電腦模式時。自動旋轉也必須由用戶打開,設備需要有加速度計。 通常,您的應用程序需要成為前台窗口才能工作。
現在您已經了解了API的所有要求(順便說一句,這可能會有所改變) - 畢竟這是一個方向“偏好”,它仍然沒有按預期工作嗎? 目的是用戶仍然可以控制體驗。
在某些情況下,我看到開發人員一直試圖將此API用於在自助服務終端模式下運行單個應用程序的自定義OEM設備。 API專為普通應用場景而設計,而不是針對自助服務終端場景。 如果你有這樣的場景,那么理想情況下你可以描述你想要驅動的硬件配置(比如普通的OEM設備 - 例如你編寫ACPI表和固件),操作系統將使用正確的方向。 如果您只是構建一次性設備,可以考慮在啟動時使用Win32應用程序中的SetDisplayConfig設置屏幕旋轉,而不是依賴於自動旋轉。
您使用了正確的API來強制在UWP應用中進行定位,但您可以參考備注部分中的官方DisplayOrientations枚舉 :
應用程序通常使用此屬性來轉換加速度計的讀數或根據當前屏幕旋轉轉換物理按鈕事件。
這意味着,這些工作,但只有當設備有加速度計,在筆記本電腦甚至模擬器上,它們沒有任何影響。
還有什么替代方法我可以在模擬器而不是實際的平板電腦/設備中測試它嗎?
不,模擬器不適合,您可以在移動或移動模擬器上進行測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.