カスタム要素をいくつか作成し、プログラムで右上隅(上端からn
ピクセル、右端からm
ピクセル)に配置したいと考えています。そのため、画面の幅と高さを取得して、位置を設定する必要があります。
int px = screenWidth - m;
int py = screenHeight - n;
メインのアクティビティで、screenWidth
とscreenHeight
を取得するにはどうすればよいですか?
表示寸法をピクセル単位で知りたい場合は、[getSize`][1]をご利用ください。
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
アクティヴィティ」でない場合は、「WINDOW_SERVICE」でデフォルトの「ディスプレイ」を取得できます。
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
フラグメントの中にいる場合は、Activity.WindowManager(Xamarin.Androidの場合)またはgetActivity().getWindowManager()(javaの場合)を使用してください。
getSizeが導入される前(APIレベル13)は、現在は非推奨となっている
getWidthや
getHeight`といったメソッドを使うことができました。
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth(); // deprecated
int height = display.getHeight(); // deprecated
しかし、あなたが説明しているユースケースでは、レイアウトのマージンやパディングの方が適切だと思われます。
別の方法としてはDisplayMetrics です。
ディスプレイのサイズ、密度、フォントのスケーリングなど、ディスプレイに関する一般的な情報を記述する構造体です。DisplayMetricsのメンバーにアクセスするには、次のようにオブジェクトを初期化します。
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
widthPixels`を使って、以下の情報を得ることができます。
"ディスプレイの絶対的な幅をピクセルで表します。"
Example:
Log.d("ApplicationTagName", "Display width in px is " + metrics.widthPixels);
[1]: http://developer.android.com/reference/android/view/Display.html#getSize%28android.graphics.Point%29
一つの方法は
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
これは非推奨なので、代わりに以下のコードを試してみてください。最初の2行のコードでは、DisplayMetrics
というオブジェクトを取得しています。このオブジェクトには、heightPixels
やwidthPixels
といったフィールドが含まれています。
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;