【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で復元して・・・ってやった方が、
ユーザーにとってもアプリにとってもいいのかなと、ちょっと思いました。。。(;´・ω・)
まぁ時と場合によりますかね!笑
ってことで以上です。おわり!