画面の向きを固定する (画面の回転を抑制する) - Android
Androidでアプリの画面の回転を抑制するコードを紹介します。
こちらの記事で作成した写真プレビューアプリを実行すると縦向きの状態時には下図の画面になります。
画面の一部にしかプレビューが表示されず、向きもずれています。
横向きの場合は正しく表示されます。
原因
縦向きの状態では、画面幅と高さが入れ替わるために上記の減少が発生します。
(画面のWidthとHeightが入れ替わりますが、Cameraのプレビューの縦横は入れ替わらないため)
対策
以下の対策があります。
- 画面を横向きに固定する
- 縦画面用のレイアウトを作成する
縦画面用のレイアウトを作成するのは手間がかかるため、今回は画面を横向きに固定する処理を入れます。
コード
AndroidManifest.xmlを編集します。
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.iPentec.simplecamera2"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.CAMERA"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:screenOrientation="landscape"
android:name="com.iPentec.simplecamera2.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
解説
AndroidManifest.xml中の
android:screenOrientation="landscape"
を追加します。この行により画面の回転が横向きに固定されます。
実行結果
プロジェクトを実行します。縦画面時でも画面全体にプレビューが表示されるようになりました。
横向きの場合も問題ありません。
著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。