libro
www.tuyano.com
Google androidプログラミング入門

画面表示について考える (4/6)

作成:2010-06-18 17:32
更新:2010-06-18 17:32

■現在の画面の向きを調べるには?

では、「今、どっち向きか?」を調べるにはどうすればよいのでしょうか。これは、プログラムの設定情報を管理する「Configuration」というクラスを利用します。これは以下のような形で利用します。

1.Resourcesを取得する
Resources 変数 = this.getResources();
まず最初に、リソースを管理する「Resources」クラスを取得します。これはActivityの「getResources」を呼び出します。

2.Configurationを得る
Configuration 変数 = [Resources].getConfiguration();
続いて、Resourcesから「getConfiguration」を呼び出してConfigurationインスタンスを取得します。

3.orientationフィールドを調べる
int 変数 = [Configuration].orientation;
取り出したConfigurationには、さまざまな設定情報がフィールドとして保管されています。画面の向きは、「orientation」というintフィールドとして用意されています。この値を取得すればわかります。

orientationの値は、整数で指定されますが、これはConfigurationに用意されている以下のような定数を使って調べることができます。

ORIENTATION_PORTRAIT――ポートレイト(縦向き)
ORIENTATION_LANDSCAPE――ランドスケープ(横向き)
ORIENTATION_SQUARE――値がわからない、または得られない

では、簡単なサンプルをあげておきましょう。これは、ボタンを押すと、現在の向きを調べて表示するサンプルです。機器を縦横にいろいろな向きにしてボタンを押し、結果を調べてみるとよいでしょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

package jp.tuyano;

import android.app.Activity;
import android.content.res.*;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;

public class SampleApp extends Activity {
	private Activity me;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		me = this;
		Button btn = (Button)this.findViewById(R.id.btn);		
		
		btn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Resources resources = getResources();
				Configuration config = resources.getConfiguration();
				int orientation = config.orientation;
				String msg = "不明。";
				switch(orientation){
				case Configuration.ORIENTATION_PORTRAIT:
					msg = "ポートレイト!";
					break;
				case Configuration.ORIENTATION_LANDSCAPE:
					msg = "ランドスケープ!";
					break;
				}
				Toast toast = Toast.makeText(me, msg, Toast.LENGTH_LONG);
				toast.show();
		}});
	}
}

※関連コンテンツ

「Google androidプログラミング入門」に戻る