うきっとラボ~中卒から始めるプログラミング~

中卒のポンコツ太郎が立派なプログラマになるまでの道のり

【Android】~ちょこメモ~ 画面の向きを固定してみた

画面の向きを固定したい

デフォルトの動作では、
ユーザーが画面の向きを変えることができる
ようになっています(∩´∀`)∩

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

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


マニフェストに追記

やることは簡単('ω')ノ

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

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.fixedscreensample">

    <application
        ~省略~>

        <activity android:name=".MainActivity"
            android:screenOrientation="portrait">
            <!-- ↑これを追加↑ -->

            <intent-filter>
                <!-- ~省略~ -->
            </intent-filter>

        </activity>

        <activity android:name=".SubActivity"></activity>

    </application>

</manifest>

固定したいActivityの属性に「android:screenOrientation」を追加すればOKです!

指定できる値はたくさんありますが、ココでは3つに絞って紹介します(・ω・)ノ

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


そのほかの属性値が知りたい方はこちら↓
developer.android.com



注意点

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


例えば上記のサンプルでは、
MainActivityを表示中は画面が固定されますが、
SubActivityを表示中は画面が固定されません。


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

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.fixedscreensample">

    <application
        ~省略~>

        <activity android:name=".MainActivity"
            android:screenOrientation="portrait">

            <intent-filter>
                <!-- ~省略~ -->
            </intent-filter>

        </activity>

        <activity android:name=".SubActivity"
            android:screenOrientation="portrait"></activity>
            <!-- ↑これを追加↑ -->

    </application>

</manifest>

こうすればOKです(/・ω・)/


まとめ

今回は「画面の固定方法」についての記事でした。

Activityは画面の向きを変えると
onDestroy()が呼ばれて再生成されてデータ飛ぶし、

横向きにするとレイアウト崩れるし・・・って時には便利かもしれません。


ただ、特に理由がないときには
ちゃんと横向き用のレイアウト用意して、データもsavedInstanceStateで復元して・・・ってやった方が、
ユーザーにとってもアプリにとってもいいのかなと、ちょっと思いました。。。(;´・ω・)

まぁ時と場合によりますかね!笑

ってことで以上です。おわり!