Выбор параметров макета для конкретной модели смартфона - PullRequest
0 голосов
/ 09 октября 2018

Я новичок в разработке мобильных приложений и пытаюсь разработать приложение для Android для нескольких моделей смартфонов и планшетов.
Теперь у меня возникают проблемы с выбором подходящих параметров макета для Xiaomi Redmi 6a [https://www.gadgetsnow.com/mobile-phones/Xiaomi-Redmi-6A]
Я разработал макет специально для него: land-xhdpi-1440x720 Но когда я пытаюсь запустить свое приложение, кажется, что оно выбирает land-xhdpi-800x480.

Почему так?Что я делаю не так в этом случае?

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

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

В соответствии со спецификацией папки макета она не позволяет указывать оба размера экрана в имени папки макета.

Если вы хотите проверить модель устройства в своем приложении, вы можетеиспользуйте Класс сборки (поля BRAND, MODEL и DEVICE) и выберите подходящий макет во время выполнения, вызвав setContentView (R.layout. *) в вашем Activity / Fragment.Однако следует помнить, что сопоставить модель устройства с разрешением экрана может быть непросто, тем более что на некоторых телефонах разрешение можно изменить в настройках.Было бы безопаснее проверить фактическое разрешение во время выполнения:

DisplayManager mgr = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE)
Display[] allDisplays = mgr.getDisplays();
Display targetDisplay;
if (allDisplays != null && allDisplays.length > 0) {
    //select the display to use, usually there is only one (or find the one with the highest resolution)
    targetDisplay = allDisplays[0];
    //get the resolution
      Point sizePt = new Point();
      targetDisplay.getRealSize(sizePt);
    //or
      DisplayMetrics metrics = new DisplayMetrics();
      targetDisplay.getRealMetrics(metrics);

}

Также обратите внимание, что фактические значения могут не совпадать с физическим разрешением из-за высоты уведомлений и панелей навигации, поэтому обязательно запустите некоторыетесты и попробуйте использовать более общие сравнения, чем

sizePt.x == 1440 && sizePt.y == 720
0 голосов
/ 09 октября 2018
  1. Это считается плохой практикой.Зачем вам макет для конкретного устройства?
  2. Размер экрана для квалификатора ресурса задается в dp, а не в пикселях.Для экрана xhdpi с разрешением 1440x720 пикселей размер экрана будет 720x360 dp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...