Я создаю другую папку значений для поддержки разных размеров экрана.
Во-первых, использование определителей плотности (например, -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/
)
Часто этого достаточно.
Я ссылался на разные сайты. Они сбивают с толку
Возможно, стоит почитать книгу.