Android DisplayMetrics возвращает неверный размер экрана в пикселях

#java #android #screen #screen-size

#java #Android #экран #размер экрана

Вопрос:

У меня Samsung Galaxy S20 .

Я запускаю этот код:

 DisplayMetrics displayMetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
    mScreenHeight = displayMetrics.heightPixels;
    mScreenWidth = displayMetrics.widthPixels;
  

Я получаю:

mScreenHeight = 2201,0 mScreenWidth = 1080,0

В то время как разрешение экрана S20 составляет 1440×3200 в соответствии с этой страницей.

Такой большой разрыв — это не просто вопрос высоты строки состояния.

Как я могу получить реальный размер экрана в пикселях?

Спасибо!

Комментарии:

1. вы можете получить текущие режимы, поддерживаемые display, используя context.getDisplay().getMode() для получения текущего режима отображения. Вы также можете получить все поддерживаемые конфигурации с помощью context.getDisplay().getSupportedModes() и обратиться к этой документации для получения более подробной информации. получение высоты с использованием этого дисплея. Mode может помочь вам поддерживать режим dex в вашем приложении, поскольку, начиная с R, вы будете получать высоту и ширину вашего приложения только с помощью displaymetrics. обратитесь к ссылке: developer.android.com/reference/android/view /…

Ответ №1:

Последние устройства Galaxy S имеют настройку для изменения разрешения экрана. На S20 есть 3 варианта:

  • WQHD : 3200×1440
  • FHD : 2400×1080
  • HD : 1600×720

Скорее всего, вы находитесь в режиме FHD . Несмотря на то, что устройство имеет реальный размер в пикселях 3200×1440, используемое окно программного обеспечения уменьшено, и это то, что дает вам объект DisplayMetrics.

Комментарии:

1. Большое спасибо! Звучит неплохо. Посмотрим на это… Сумасшедшее поведение идеально подходит для создания множества ошибок во многих приложениях…