画面の向きを固定する (画面の回転を抑制する) - 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の積極的な活用にも取り組み中。
とっても恥ずかしがり。
掲載日: 2013-03-21
iPentec all rights reserverd.