Экран 1080x1920 420dpi, не доступ от sw420dp - PullRequest
0 голосов
/ 04 мая 2018

Я создаю другую папку значений для поддержки разных размеров экрана. Ниже перечислены папки:

values-sw320dp-hdpi
values-sw320dp-xhdpi
values-sw320dp-xxhdpi

values-sw420dpi
values-sw560dpi

values-sw480dp-hdpi
values-sw480dp-xhdpi
values-sw480dp-xxhdpi

values-sw600dp
values-sw720dp

В списке устройств, предоставленных Android Studio, есть 1080x1920 420dpi . Он должен получить доступ к значениям измерений из values-sw420dp . Но вместо этого он обращается к sw320dp- xxhdpi . Макет в 1080x1920 420dpi ** немного отличается от ** 1080x1920 xxhdpi . Может кто-нибудь объяснить мне, почему это не доступ из своей собственной папки? Или вы могли бы объяснить мне правильный способ создания макета, чтобы он поддерживал разные размеры экрана с разной плотностью? Я ссылался на разные сайты. Они сбивают с толку .. Пожалуйста, помогите мне !!

1 Ответ

0 голосов
/ 04 мая 2018

Я создаю другую папку значений для поддержки разных размеров экрана.

Во-первых, использование определителей плотности (например, -xhdpi) для типов ресурсов, отличных от drawable и mipmap, является серьезным запахом кода. Почти наверняка вы не получите ожидаемых результатов.

Во-вторых, нет квалификатора -sw420dpi или -sw560dpi. Вы могли бы иметь -sw420dp или -sw560dp, чтобы сказать, что вы хотите использовать эти ресурсы для этих порогов размера экрана. Однако такие каталоги никогда не будут использоваться из-за ваших определителей плотности в таких каталогах, как values-sw320dp-hdpi.

В списке устройств, предоставленных Android Studio, есть 1080x1920 420dpi. Должен получить доступ к значениям измерений из values-sw420dp

Нет, не должно.

Наименьшая ширина этого экрана - 1080px. 1080px при 420dpi составляет 411dp (1080 * 160/420). 411 <420. Следовательно, все, что является <code>-sw420dp, не будет квалифицировано.

Но вместо этого он обращается к sw320dp-xxhdpi.

Частично, это потому, что 411 ниже, чем 420.

Частично, это потому, что вы используете здесь определители плотности, которые замыкают многие «нормальные» правила для выбора ресурса.

Макет в 1080x1920 420dpi ** выглядит немного иначе, чем ** 1080x1920 xxhdpi.

Ваш вопрос не имеет макетов, поэтому никто не может комментировать это.

Может кто-нибудь объяснить мне, почему он не имеет доступа из своей собственной папки?

Нет "своей собственной папки".

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

  • Использование layout ресурсов в зависимости от размера экрана и (возможно) ориентации (например, res/layout-sw420dp/)

  • Используйте dimen ресурсы, измеренные в sp (для определения размера текста или объектов, над которыми преобладает текст) или dp (для всего остального) в этих ресурсах макета (например, <dimen name="margin">16dp</dimen>)

  • Использовать квалификаторы плотности и возможно определителей размера для ресурсов drawable и mipmap (например, res/drawable-hdpi/)

Часто этого достаточно.

Я ссылался на разные сайты. Они сбивают с толку

Возможно, стоит почитать книгу.

...