Android
 Computer >> コンピューター >  >> プログラミング >> Android

【Android】画面の回転を無効化してアプリの向きを固定する方法

Androidアプリを開発していると、端末を回転させても画面の向きが変わらないように固定したいケースがあります。例えば、縦画面専用のUI設計にしている場合や、回転による再描画で状態がリセットされるのを防ぎたい場合などです。

この記事では、Android Studioを使って、画面の向き(オリエンテーション)の変更をアプリに無視させる具体的な手順を解説します。

全体の手順

  1. Android Studioで新規プロジェクトを作成する
  2. レイアウトファイル(activity_main.xml)を編集する
  3. MainActivity.java で画面の向きを指定する
  4. AndroidManifest.xml を確認・編集する
  5. 実機またはエミュレータで動作確認する

ステップ1:新規プロジェクトの作成

まず、Android Studioを起動し、メニューから「File」→「New Project」を選択して、必要な項目を入力しながら新しいプロジェクトを作成します。テンプレートは「Empty Activity」で問題ありません。

ステップ2:レイアウトファイルの編集

次に、res/layout/activity_main.xml に以下のコードを記述します。ここではシンプルに、中央にTextViewを配置したConstraintLayoutを使用しています。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

ステップ3:MainActivity.java の編集

続いて、src/MainActivity.java に以下のコードを追加します。ポイントは setRequestedOrientation() メソッドです。ActivityInfo.SCREEN_ORIENTATION_PORTRAIT を指定することで、アクティビティが常に縦向き(ポートレート)に固定されます。

package com.app.sample;

import androidx.appcompat.app.AppCompatActivity;
import android.content.pm.ActivityInfo;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 画面の向きを縦向きに固定する
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }
}

横向きに固定したい場合

逆に横向き(ランドスケープ)で固定したい場合は、以下のように SCREEN_ORIENTATION_LANDSCAPE を指定します。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

ステップ4:AndroidManifest.xml の編集

次に、Manifests/AndroidManifest.xml を以下のように記述します。マニフェスト側でも android:screenOrientation="portrait" を設定すれば、コードを書かずに向きを固定できます(後述の補足を参照)。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.app.sample">

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

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

    </application>
</manifest>

アプリを実行して確認する

それでは、実際にアプリを実行してみましょう。実機のAndroidスマートフォンをPCに接続していることを前提に説明します。

Android Studioでプロジェクト内のアクティビティファイルを開き、ツールバーの「Run(実行)」アイコンをクリックします。デバイス選択ダイアログが表示されたら、接続中のモバイルデバイスを選択してください。

アプリが起動したら、端末を物理的に回転させてみてください。画面の向きが縦向きのまま変化しないことが確認できれば成功です。

補足:マニフェストだけで向きを固定する方法

Javaコードを書かずに向きを固定したい場合は、AndroidManifest.xml の activity 要素に以下の属性を追加するだけでもOKです。

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

また、android:configChanges="orientation|screenSize" を指定すると、回転時のアクティビティ再生成自体を抑制でき、画面の状態を保持したまま回転イベントのみを受け取ることも可能です。用途に応じて使い分けるとよいでしょう。

まとめ

画面の向きの変更を無視(固定)するには、主に以下の2つの方法があります。

  • コードで制御する: onCreate() 内で setRequestedOrientation() を呼び出す
  • マニフェストで宣言する: activity タグに android:screenOrientation 属性を設定する

どちらも簡単に実装できるので、アプリの仕様に合わせて適切な方法を選択してください。

  1. Androidでアプリの画面を固定(ピン留め)する方法

    友人にスマホを貸して特定のアプリだけを使ってもらいたいとき、他のアプリや個人情報まで勝手に見られるのは避けたいものです。Androidには「画面ピン留め」という便利な機能があり、これを有効にしておけば、相手は指定されたアプリ以外を操作できなくなります。この機能がオンになっている間、ユーザーはスマホの他の領域へ移動することができません。注意:この機能はすべてのAndroid端末で利用できるとは限りません。また、フルスクリーンジェスチャー(ナビゲーションジェスチャー)を使用している環境では、正常に動作しない場合があります。画面ピン留め機能を有効にする方法まず、スマホの設定画面を開きます。設定項目の

  2. Androidスマホでアプリのアイコンを変更する方法|Nova Launcherと専用アプリの使い方

    Android OSの最大の魅力は、その高いカスタマイズ性にあります。端末に入れるアプリの選択から、インターフェース全体、画面遷移エフェクト、外観、さらにはアイコンに至るまで、ほぼすべてを自由に変更できます。もし今のスマホの見た目に飽きてしまったら、思い切ってイメージチェンジしてみましょう。テーマの変更、新しい壁紙の設定、クールなトランジション効果やアニメーションの追加、カスタムランチャーの導入、デフォルトアイコンをおしゃれなものに置き換えるなど、Androidはユーザーインターフェースを変えることで、古い端末をまるで新品のように生まれ変わらせることができるのです。 アプリのアイコンを変更