Android Tips💡 – 画面の向きを固定してみた

画面の向きを固定したい

デフォルトの動作では、ユーザーが画面の向きを変えることができる

ようになっています🙌

しかし場合によっては「横画面にしてほしくないなぁ」なんて時もあるかと思いますので、

設定方法について解説していきます✨

マニフェストに追記する

やることは簡単(‘ω’)ノ

AndroidManifest.xmlに追記するだけです!

// 省略

        <activity android:name=".MainActivity"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SubActivity"></activity>

// 省略

追記する場所は、

アクティビティタグのandroid:screenOrientation属性です👌

縦画面固定なら”portrait”に指定します。

指定できる値

ここでは3つ紹介します😉

unspecified(デフォルト値)システムが画面の向きを選択します。指定していない場合はこれになります。
portrait縦方向で固定されます。
landscape横方法で固定されます。

その他の属性値についてはこちら↓

参考:<activity> |  Android Developers

ポイント

注意しなければいけないのが、

この属性は「アクティビティごと」に設定しなければいけないということです!

例えば上記のサンプルでは、

MainActivityを表示中は画面が固定されますが、SubActivityを表示中は画面が固定されません。

もしSubActivityでも画面を固定したい場合は

// 省略

        <activity android:name=".MainActivity"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SubActivity"
            android:screenOrientation="portrait"></activity>

// 省略

これでOKです🙌

画面固定の注意点

画面固定をすることで、アクティビティの状態やレイアウトをある程度気にしなくても良くなるので楽ですよね😆

ただし、あまり多用するのはおすすめしません😅

2020年2月末頃リリースした「AndroidStudio3.6」以降、

こういった画面の向きを固定するという動作はユーザビリティの観点から推奨されていないようです。

下のSSはAndroidStudio3.6での表示です。

portraitの部分がエラー表示されている

これはChromeOSデバイス(Androidアプリを使用できる)での動作を考慮しているためです。

ChromeOS搭載のChromeBookでは、アプリは横画面で表示されますよね😓

このとき縦画面固定のアプリだと、ユーザが首を曲げながら操作しないといけません😂

今後、もし開発するアプリがChromeOSでの動作を想定するのであれば

ちゃんと横向き用のレイアウト用意して、データもsavedInstanceStateで復元して・・・ってやった方が、

ユーザーにとってもアプリにとってもいいのかなと思います🤔🤔

大変ですけどね!!笑