2011年9月15日木曜日

Display

LinearLayout (動的に生成する)」では動的に画面レイアウトを作ってみました。次はもう少し発展させて、画面が縦長の場合と横長の場合に表示する内容(件数)を変えてみたいと思います。それには画面の情報を知る必要があります。

今回は画面の情報を取得するためのDisplayクラスについて説明します。


ディスプレイの情報を取得する

Displayクラスは、画面の向き・高さ・幅の情報を取得します。

メソッド取得する情報
getHeight()高さ(縦方向のピクセル数)
getWidth()幅(横方向のピクセル数)
getOrientation()方向(0:縦、1:横)

以下のプログラムでは起動時にディスプレイの情報をデバッガにログ出力します。

Androidプロジェクトの設定
プロジェクト名:DisplayTest
ビルドターゲット:Android 2.1-update1
アプリケーション名:DisplayTest
パッケージ名:jp.co.triware.samples.DisplayTest
アクティビティーの作成:DisplayTest
最小SDKバージョン:7

DisplayTest.java
package jp.co.triware.samples.DisplayTest;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Display;

public class DisplayTest extends Activity {
    private final String TAG = this.getClass().getSimpleName();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        printDisplayInfo();
    }

    private void printDisplayInfo() {
        Display display = getWindowManager().getDefaultDisplay();
        Log.i(TAG, "getOrientation: " + display.getOrientation());
        Log.i(TAG, "getHeight: " + display.getHeight());
        Log.i(TAG, "getWidth: " + display.getWidth());
    }
}

実行結果
実行結果は次のようになります。

縦置き(縦:480×横:320)の場合
getOrientation()0
getHeight()480
getWidth()320


エミュレータを使用している場合、CTRL+F11またはCTRL+F12で縦横を切り替えることができます。
横置き(縦:320×横:480)の場合
getOrientation()1
getHeight()320
getWidth()480


エミュレータのHVGA画面では、getOrientation()の戻り値が0の場合は縦置き(縦長)、1の場合は横置き(横長)となっていますが、これが「縦置き=縦長」「横置き=横長」とは限りません。端末によっては、基本となる画面、例えばホーム画面が横長固定のものがあります。この場合は横長=0、縦長=1となっていると思います。端末の仕様に依存しますから、動的に画面レイアウトを作る場合などは、画面の向きではなく、画面の高さ・横幅によって処理しなければなりません。

0 件のコメント:

コメントを投稿