2012年3月30日金曜日

AndroidでActivity以外でもScreenMetricsを得るには?

Androidで画面情報を得るにはScreenMetricsが必要だ。

しかし、これを得るためにはWindowManagerがゲットできなければならない。

ActivityにはgetWindowManager()という専用メソッドがあるので簡単にゲットできるけど、Activity以外でWindowManagerを得るにはどうしたらいいだろう?

こんな風。

public static final DisplayMetrics getDisplayMetrics(Context context) {
  WindowManager winMan = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
  Display disp = winMan.getDefaultDisplay();
  DisplayMetrics dispMet = new DisplayMetrics();
  disp.getMetrics(dispMet);
  return dispMet;
}

つまり、Contextさえあればいい。

ContextはViewクラスなどのコンストラクタでも渡ってくるので、そういったクラスならどこでもゲットできることになるだろう。