Androidで画面サイズをピクセル単位で取得する方法 質問する

Androidで画面サイズをピクセル単位で取得する方法 質問する

いくつかのカスタム要素を作成し、プログラムでそれらを右上隅 (n上端からピクセル、m右端からピクセル) に配置したいと思います。そのため、画面の幅と高さを取得して位置を設定する必要があります。

int px = screenWidth - m;
int py = screenHeight - n;

メインアクティビティにアクセスするにscreenWidthどうすればよいですか?screenHeight

ベストアンサー1

APIレベル30の場合WindowMetrics.getBoundsを使用します。使用例については、リンク先のドキュメントをご覧ください。

 final WindowMetrics metrics = windowManager.getCurrentWindowMetrics();
 // Gets all excluding insets
 final WindowInsets windowInsets = metrics.getWindowInsets();
 Insets insets = windowInsets.getInsetsIgnoringVisibility(WindowInsets.Type.navigationBars()
         | WindowInsets.Type.displayCutout());

 int insetsWidth = insets.right + insets.left;
 int insetsHeight = insets.top + insets.bottom;

 // Legacy size that Display#getSize reports
 final Rect bounds = metrics.getBounds();
 final Size legacySize = new Size(bounds.width() - insetsWidth,
         bounds.height() - insetsHeight);

古い回答:

ピクセル単位で表示サイズを知りたい場合は、getSize:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

に参加していない場合は、次の方法でActivityデフォルトを取得できますDisplayWINDOW_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 metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

widthPixels以下の情報を取得するために使用できます:

「ディスプレイの絶対幅(ピクセル単位)」

例:

Log.d("ApplicationTagName", "Display width in px is " + metrics.widthPixels);

おすすめ記事