Android の画面密度対応

Android では、各メーカーにより画面サイズが異なります。縦サイズ×横サイズの違いに加えて画面密度も注意点になります。

画面サイズだけを留意していても、画面密度により横サイズがうまく収まらないことが発生します。その時の対応をまとめました。


「abcde…890」(36文字)を横に表示するアプリで、以下のシミュレータ画面で順番に確認しました。

・10inch WXGA(tablet)の画面
  画面に収まっていて機能上問題ありませんが、横半分の使用になっているので工夫が必要です。

・7 WSVGAの画面
きれいに収まっています。

・Galaxy Nexusの画面
横が入りきっていません。

・Nexus7の画面
きれいに収まっています。


画面解像度による対応

Galaxy Nexusは、画面サイズ720×1280ですが、横サイズが画面から溢れてしまっています。
Galaxy Nexusの画面は、画面密度がxhdpi(超高解像度)で作成されているので、画面密度で判断して対応を行います。

適切な画面表示対応をする場合、画面サイズも絡めて対応が必要になるケースがありますが以下のソースは画面サイズに関しては、使用していません。

        TextView TtextView01 = (TextView) findViewById(R.id.textView01);

<pre><code>    TtextView01.setWidth(600);
    TtextView01.setHeight(40);
    TtextView01.setTextSize(30);
    TtextView01.setText(&amp;quot;abcdefghijklmnopqrstuvwxyz1234567890&amp;quot;);

    //ディスプレイサイズ取得
    WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE);

    // ディスプレイのインスタンス生成
    Display disp = wm.getDefaultDisplay();
    Point size = new Point();
    disp.getRealSize(size);

    //画面密度
    float scale = getResources().getDisplayMetrics().density; 

    if (scale &amp;gt;= 1.0){
        TtextView01.setTextSize(18);
    }
</code></pre>

フォントサイズ30から18に変更した対応で、画面上の表示は以下になりました。

上部へスクロール
Verified by MonsterInsights