Windowsストアアプリでは、縦画面(以降、Portrait)に対応するか横画面(以降、Landscape)に対応するかを指定することができます。
「Windowsストアアプリで回転に対応しないようにする」では、アプリ全体(すべての画面)でデバイスの回転に対応させるかどうかについてご紹介しました。
本記事では、画面ごとにサポートする回転方向を指定させる方法と、強制的に画面をPortrait(またはLandscape)に切り替える方法をご紹介したいと思います。
前準備
まずは、前準備としてアプリとして、すべてのデバイスの回転に対応させるようにしておきます。下図を参考に4つの状態すべてにチェックをつけておきます。
準備はこれだけで大丈夫です。
画面毎にサポートする回転方向を指定する
Windows.Graphics.Display名前空間にDisplayPropertiesクラスがあります。DisplayPropertiesクラスは、物理ディスプレイの情報を管理するクラスで、例えばディプレイの向きであったり、ディスプレイの論理ピクセル数を取得することができます。
そのうちのひとつ、AutoRotationPreferencesプロパティでは、アプリが優先する向きを指定することが可能です。
例えば、ここではMainPage.xamlではLandscapeにのみ対応したい場合は、下記のようにMainPageクラスのコンストラクタにて、DisplayProperties.AutoRotationPreferencesプロパティに「DisplayOrientations.Landscape」を指定しています。
using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Navigation; namespace RotateSample { public sealed partial class MainPage : Page { public MainPage() { this.InitializeComponent(); // トップ画面は、Landscape固定 Windows.Graphics.Display.DisplayProperties.AutoRotationPreferences = Windows.Graphics.Display.DisplayOrientations.Landscape; }
強制的に画面をPortrait(縦画面)に切り替える
ボタンをクリックされると強制的に画面をPortrait(縦画面)に切り替える処理は以下の通りです。やっていることは、前述したした通り、優先される回転方向を指定しているだけです。
private void btn4_Click(object sender, RoutedEventArgs e) { Windows.Graphics.Display.DisplayProperties.AutoRotationPreferences = Windows.Graphics.Display.DisplayOrientations.Portrait; }
強制的に画面をLandscape(横画面)に切り替える
ボタンをクリックされると強制的に画面をLandscape(横画面)に切り替える処理は以下の通りです。
private void btn5_Click(object sender, RoutedEventArgs e) { Windows.Graphics.Display.DisplayProperties.AutoRotationPreferences = Windows.Graphics.Display.DisplayOrientations.Landscape; }