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

Androidアプリで様々な画面サイズに対応する方法!DisplayMetricsで画面サイズ(dp)を取得する手順を解説

Android端末はスマートフォンからタブレットまで、画面サイズや解像度が実に様々です。本記事では、DisplayMetricsクラスを使って端末の画面サイズをdp単位で取得・表示するサンプルアプリを通じて、Androidで様々な画面サイズに対応するための基本を解説します。

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

まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目を入力してプロジェクトのセットアップを完了させてください。

ステップ2:レイアウトファイル(activity_main.xml)の編集

次に、res/layout/activity_main.xmlに以下のコードを追加します。画面サイズを表示するためのTextViewを配置しています。

<?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"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        tools:ignore="MissingConstraints" />

    <TextView
        android:id="@+id/tv_screen"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:textSize="14dp"
        tools:ignore="MissingConstraints" />
</androidx.constraintlayout.widget.ConstraintLayout>

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

src/MainActivity.javaに以下のコードを追加します。ここではDisplayMetricsクラスを使用して、画面の幅と高さをdp単位で計算しています。

package com.app.sample;
import androidx.appcompat.app.AppCompatActivity;
import android.util.DisplayMetrics;
import android.widget.TextView;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        float dp_w = ( metrics.widthPixels * 160 ) / metrics.xdpi;
        float dp_h = ( metrics.heightPixels * 160 ) / metrics.ydpi;
        TextView tvScreen = (TextView) findViewById(R.id.tv_screen);
        tvScreen.setText(Float.toString((int)dp_w) + "dp x " + Float.toString((int)dp_h) + "dp");
    }
}

ポイントとなるのは次の2行です。

float dp_w = ( metrics.widthPixels * 160 ) / metrics.xdpi;
float dp_h = ( metrics.heightPixels * 160 ) / metrics.ydpi;

ピクセル数(widthPixels / heightPixels)を、1インチあたりのドット数(xdpi / ydpi)で割ることで、端末の密度に依存しないdp(density-independent pixel)の値へ変換できます。これにより、解像度の異なる端末同士でも同じ基準で画面サイズを比較できるようになります。

ステップ4:AndroidManifest.xmlの確認

Manifests/AndroidManifest.xmlに以下のコードを追加します。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.app.sample">
    <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端末がパソコンに接続されているものとします。Android Studioでプロジェクト内のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックしてください。実行対象として接続したモバイルデバイスを選択すると、端末の画面にその機種の画面サイズがdp単位で表示されます。

Androidアプリで様々な画面サイズに対応する方法!DisplayMetricsで画面サイズ(dp)を取得する手順を解説

まとめ:マルチスクリーン対応のためのその他のポイント

今回のサンプルは画面サイズの取得方法でしたが、実際のアプリ開発では以下のようなテクニックを組み合わせると、より多くの端末に自然に対応できます。

  • サイズ指定にはdp、文字サイズにはspを使い、ピクセル(px)への依存を避ける
  • ConstraintLayoutなど柔軟なレイアウトを採用し、画面幅に応じて自動的に伸縮させる
  • res/layout-sw600dp/などのリソース修飾子を使って、タブレット向けレイアウトを切り替える
  • 画像はベクター形式(Vector Drawable)か、複数の解像度(mdpi〜xxxhdpi)のリソースを用意する

これらの基本を押さえておくことで、スマートフォンからタブレットまで、幅広いAndroid端末で快適に動作するアプリを作れるようになります。

  1. Androidでホーム画面を割り当てる方法!変更・削除・復元の手順を徹底解説

    Androidでホームボタンをタップすると、設定されたホーム画面へ移動します。しかし、うっかり別の画面をホームに設定してしまったり、システムアップデートによってホーム画面が勝手に切り替わってしまうこともあります。また、「別の画面をホームにしたい」と感じる場面もあるでしょう。アイコンをすべて移動し直す必要はありません。Androidでは、既存のどの画面でも簡単にホーム画面として割り当てることができます。 Androidでホーム画面を割り当てる手順 Android端末で作成した画面は、どれでもホーム画面に設定可能です。通常は最初の画面がホームになっていますが、3番目や4番目の画面をホームにする

  2. Androidの画面をPCにミラーリング!USBデバッグからAirDroid・TeamViewer活用まで徹底解説

    結婚式の写真やお気に入りの映画がAndroidスマホの中に入っていて、大画面で楽しみたいと思ったことはありませんか?どうすれば実現できるのでしょうか。その答えが「AndroidからPCへのスクリーンミラーリング」です。画面を共有すれば、友人や家族と一緒にお気に入りの映画を大画面で鑑賞できます。この記事では、Androidの画面をPCにミラーリングする具体的な手順を詳しく解説します。ステップ1:USBデバッグを有効にするまず、USBデバッグとは何かを理解しておきましょう。USBデバッグとは、Android端末に用意されている開発者向け機能の一つで、USB接続を通じてテスト用デバイス(PCなど)か