Xamarin.Androidで画面の向きを固定する

提供: MonoBook
2021年3月5日 (金) 02:25時点におけるAdministrator (トーク | 投稿記録)による版 (→‎関連項目)
ナビゲーションに移動 検索に移動

一般的なアプリでは画面は可変の方がいいのだろうが、MonoGameなどで作るゲームでは画面の向きを固定したいことが多い。

実装:ActivityのRequestedOrientationプロパティをoverrideする

縦方向に固定する場合。

    public class Activity1 : AndroidGameActivity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // 以下のRequestedOrientationプロパティに設定する方法だとダメ。
            // 起動時に一瞬だけ横になりMonoGameの初期化ルーチンで画面サイズの情報がバグる。
            this.RequestedOrientation = ScreenOrientation.Portrait;

            var g = new GameMain();
            SetContentView(g.Services.GetService<View>());
            g.Run();
        }
		
        // RequestedOrientationプロパティをoverrideする方法だと完璧に動くようだ。
        public override ScreenOrientation RequestedOrientation
        {
            get
            {
                return ScreenOrientation.Portrait;
            }
            set
            {
                base.RequestedOrientation = ScreenOrientation.Portrait;
            }
        }
    }

関連項目

参考文献