Intereting Posts
Как отправлять динамические сообщения (или в цикле) в OKHTTP 3.x в android? OpenCV: оптимизация вычисления оптического потока Как передать данные изображения из одной активности в другую? Android-плагин для плагинов multidex ZipException Почему нам нужно искать обновления для мобильного приложения? Android: поток master / detail (двойная панель) с использованием 1 активности Android spotify ERROR, отсоединяющий поток с интерполяционными кадрами (count = 28) Сравнение между QAbstractButton и QPushButton * отсутствует литой Как смешивать два аудиокарта и кодировать обратно в аудиофайл с помощью MediaMuxer Изменение названия на TimePicker? Невыносимо медленный эмулятор Android – есть ли исправление? Множественные фильтры для расширения файлов / миметиков с одним действием Как получить одноразовый объект для подписчиков в RxJava2 Используйте кнопку гарнитуры для записи звука Компонент Dagger2 (un-scoped) не может зависеть от компонентов с областью – Ошибка

Правильный способ получения DisplayMetrics: getResources () или getWindowManager ()

Каким образом можно получить DisplayMetrics, т. xdpi Получить информацию о экране / дисплее, такую ​​как density или xdpi ?

Я спрашиваю, потому что я видел два способа обойти это:

ПЕРВЫЙ:

  DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); 

Затем получение информации по metrics.density или metrics.xdpi и т. Д.

ВТОРОЙ:

  getResources().getDisplayMetrics().density 

В этом методе я считаю, что вы можете просто инициализировать переменную, чтобы удерживать DisplayMetric, а затем захватывать информацию, как в методе FIRST:

  DisplayMetrics metricsMethodTwo = getResources().getDisplayMetrics() 

А затем вы можете получить информацию, как обычно: metricsMethodTwo.density или metricsMethodTwo.xdpi

Я видел их в разных местах в Документах. Итак, каковы различия, если таковые имеются, и когда один метод предпочтительнее (или более уместен) над другим и почему? благодаря

 public DisplayMetrics getDisplayMetrics () 

Верните текущие показатели отображения , которые действуют для этого ресурса . Возвращаемый объект следует рассматривать как только для чтения.

 public void getMetrics (DisplayMetrics outMetrics) 

Инициализируйте объект DisplayMetrics из данных этого дисплея .

Разница в том, что метрики, возвращаемые методом « Resources являются метриками для этого конкретного объекта « Resources . Вы всегда можете создать новый экземпляр Resources с помощью конструктора

 Resources(AssetManager assets, DisplayMetrics metrics, Configuration config) 

В котором вы можете установить любые показатели, которые вы хотите, не обязательно метрики, которые вы можете получить из экземпляра Display возвращаемого методом getDefaultDisplay() .

В этом разница. Это может не повлиять на значения, если вы используете только ресурсы по умолчанию и дисплей по умолчанию.