Android 端末の画面サイズを取得

Android 端末の画面サイズを取得するのに、API Level 13 からは android.view.Display の
getWidth() 、getHeight() は、deprecated
どうしたものかと思ってたが、、、

API Level 12 までは、、、
 Display display = getWindowManager().getDefaultDisplay();
 int width = display.getWidth();
 int height = display.getHeight();

API Level 13 から、getSize で取得することになってる。
 Display display = getWindowManager().getDefaultDisplay();
 Point point = new Point();
 display.getSize(point);
 int width = point.x;
 int height = point.y;

stackoverflow に、cool なものを発見。
(あまりこのような機会が無かったから。。。)


以下、Display#getSizeの実行の代わりに以下メソッドを用意しておいて、、

void overrideGetSize(Display display, Point outSize){
   try{
      Class pointClass = Class.forName("android.graphics.Point");
      Method newGetSize = Display.class.getMethod("getSize", new Class[]{ pointClass });
      newGetSize.invoke(display, outSize);
   }catch(Exception ex){
      outSize.x = display.getWidth();
      outSize.y = display.getHeight();
   }
}


取得する Display インスタンスに対して以下のようにする。

Display display = getWindowManager().getDefaultDisplay();
Point point = new Point();
overrideGetSize(display, point);
int width = point.x;
int height = point.y;