2017年10月24日

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);

        TtextView01.setWidth(600);
        TtextView01.setHeight(40);
        TtextView01.setTextSize(30);
        TtextView01.setText("abcdefghijklmnopqrstuvwxyz1234567890");

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

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

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

        if (scale >= 1.0){
            TtextView01.setTextSize(18);
        }

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