При поддержке различных размеров экрана (плотности) в Android часто основное внимание уделяется созданию разных макетов для каждого возможного экрана. IE
- ldpi
- MDPI
- ИПЧР
- xhdpi
- xxhdpi
- xxxhdpi
Я разработал макет для экрана xhdpi в качестве справочного материала и определил его размеры в файле sizes.xml . Теперь я хочу поддержать все возможные размеры экрана. Как я могу это сделать?
Насколько мне известно, я могу использовать этот инструмент, чтобы определить правильный файл sizes.xml для других размеров экрана и добавить его в свой проект. Это правильный способ сделать это в моей ситуации?
Другой вопрос, нужно ли мне создавать только sizes.xml для указанных выше размеров экрана? Если да, то что w820dp
?
Спасибо за вашу помощь. Мне нужно поддерживать только телефоны (а не планшеты или другие устройства).
dimesn.xml
файлы для разных разрешений.W820dp
это за то, что поддерживает другую версию Android? Также можете ли вы предложить мне какое-либо руководство по поддержке разных экранов на основе sizes.xml?Ответы:
Вам необходимо создать папку «Различные значения» для разных экранов . подобно
Для получения дополнительной информации вы можете посетить здесь
Под редакцией По @humblerookie
Вы можете использовать плагин Android Studio под названием Dimenify для автоматического создания значений размеров для других сегментов пикселей на основе настраиваемых коэффициентов масштабирования. Он все еще находится в стадии бета-тестирования, обязательно сообщайте разработчику о любых проблемах / предложениях.
источник
Используйте масштабируемый DP
Хотя создание другого макета для разных размеров экрана теоретически является хорошей идеей, может быть очень сложно приспособить его для всех размеров экрана и плотности пикселей. Имея более 20+ разных
dimens.xml
файлов, как предложено в приведенных выше ответах, совсем непросто управлять.Как пользоваться:
Для использования
sdp
:implementation 'com.intuit.sdp:sdp-android:1.0.5'
в свойbuild.gradle
,Заменить
dp
значение , например50dp
с@dimen/50_sdp
примерно так:Как это устроено:
sdp
масштабируется вместе с размером экрана, потому что это, по сути, огромный список различных значенийdimens.xml
для всех возможныхdp
значений.Посмотреть в действии:
Вот он на трех устройствах с сильно различающимися размерами экрана и плотностью:
Обратите внимание, что
sdp
расчет единицы размера включает некоторое приближение из-за некоторых ограничений производительности и удобства использования.источник
мы хотим видеть изменения требуемого размера просмотра на разных экранах.
Нам нужно создать разные папки значений для разных экранов и поместить файл sizes.xml в зависимости от плотности экрана.
Я взял один TextView и наблюдал за изменениями, когда я менял sizes.xml в разных папках значений.
Пожалуйста, следите за процессом
нормальный - xhdpi \ sizes.xml
Приведенные ниже устройства могут изменять размеры экранов, когда мы меняем нормальный - xhdpi \ sizes.xml
nexus 5X (5,2 дюйма * 1080 * 1920: 420 точек на дюйм)
nexus 6P (5,7 дюймов * 1440 * 2560: 560 точек на дюйм)
nexus 6 (6,0 дюймов * 1440 * 2560: 560 точек на дюйм)
nexus 5 (5,0 ", 1080 1920: xxhdpi)
nexus 4 (4,7 дюйма, 768 * 1280: xhdpi)
Galaxy nexus (4,7 дюйма, 720 * 1280: xhdpi)
4,65 дюйма, 720p (720 * 1280: xhdpi)
4,7 дюйма, WXGA (1280 * 720: Xhdpi)
Xlarge - xhdpi \ sizes.xml
Приведенные ниже устройства могут изменять размеры экранов, когда мы меняем Xlarge - xhdpi \ sizes.xml.
nexus 9 (8,9 дюйма, 2048 * 1556: xhdpi)
nexus 10 (10,1 дюйма, 2560 * 1600: xhdpi)
большой - xhdpi \ sizes.xml
Приведенные ниже устройства могут изменять размеры экранов, когда мы меняем большой - xhdpi \ sizes.xml.
nexus 7 (7,0 ", 1200 * 1920: xhdpi)
nexus 7 (2012 г.) (7,0 дюймов, 800 * 1280: tvdpi)
Следующие экраны видны в «Поиске обычных телефонов и планшетов».
большой - mdpi \ sizes.xml
Приведенные ниже устройства могут изменять размеры экранов, когда мы меняем большой - mdpi \ sizes.xml
5,1 дюйма, WVGA (480 * 800: mdpi)
5,4 дюйма, FWVGA (480 * 854: mdpi)
7,0 "WSVGA (планшет) (1024 * 600: mdpi)
нормальный - hdpi \ sizes.xml
Приведенные ниже устройства могут изменять размеры экранов, когда мы меняем нормальный - hdpi \ sizes.xml
nexus s (4,0 ", 480 * 800: hdpi)
nexus one (3,7 дюйма, 480 * 800: hdpi)
маленький - ldpi \ sizes.xml
Приведенные ниже устройства могут изменять размеры экранов, когда мы меняем маленький - ldpi \ sizes.xml
2,7-дюймовый слайдер QVGA (240 * 320: ldpi)
2,7 дюйма, QVGA (240 * 320: ldpi)
xlarge - mdpi \ sizes.xml
Приведенные ниже устройства могут изменять размеры экранов, когда мы меняем xlarge - mdpi \ sizes.xml.
10,1 дюйма, WXGA (ПЛАНШЕТ) (1280 * 800: MDPI)
нормальный - ldpi \ sizes.xml
Следующие ниже устройства могут изменять размеры экранов, когда мы меняем нормальный - ldpi \ sizes.xml
3,3 дюйма, WQVGA (240 * 400: LDPI)
3,4 дюйма, WQVGA (240 * 432: LDPI)
нормальный - hdpi \ sizes.xml
Приведенные ниже устройства могут изменять размеры экранов, когда мы меняем нормальный - hdpi \ sizes.xml
4,0 дюйма, WVGA (480 * 800: hdpi)
3,7 дюйма, WVGA (480 * 800: hdpi)
3,7-дюймовый слайдер FWVGA (480 * 854: hdpi)
нормальный - mdpi \ sizes.xml
Приведенные ниже устройства могут изменять размеры экранов, когда мы меняем нормальный - mdpi \ sizes.xml
3,2-дюймовый слайдер HVGA (ADP1) (320 * 480: MDPI)
3,2 дюйма, QVGA (ADP2) (320 * 480: MDPI)
источник
values-normal-xhdpi
?Есть хорошие библиотеки, которые справятся со всем и уменьшат вашу боль. Чтобы использовать его, просто добавьте две зависимости в gradle:
После этого используйте
dimens
так:источник
Я загрузил простую программу на Java, которая принимает на вход местоположение вашего проекта и нужный вам размерный файл. Исходя из этого, он выведет соответствующий файл измерения в консоль. Вот ссылка на него:
https://github.com/akeshwar/Dimens-for-different-screens-in-Android/blob/master/Main.java
Вот полный код для справки:
источник
Вы должны создать разные
values
папки для разных экранов и поместитьdimens.xml
файл в соответствии с плотностью.источник
ldpi
,mdpi
порядокvalues-xxhdpi
Nexus 6?320x480
это типичный mdpi . Итак, вставьте его либоvalues
values-mdpi
Вы можете поместить
dimens.xml
в1) ценности
2) значения-hdpi
3) значения-xhdpi
4) значения-xxhdpi
И укажите разные размеры в
dimens.xml
соответствующих папках в зависимости от плотности.источник
В случае , если вы хотите , чтобы узнать больше: Вот ссылка на список устройств (планшеты, мобильные, часы), в том числе
watch
,chromebook
,windows
иmac
. Здесь вы можете найти плотность, размеры и т. Д. Основываясь на этом, это хороший ресурс, если вы тоже используете эмулятор.Если вы щелкнете по конкретному элементу, справа отобразятся дополнительные сведения.
Поскольку это
Android
, я опубликую по этому поводу .~ Лучше, если вы сохраните копию в Интернете. Для просмотра офлайн.
источник
В Android 3.2 представлен новый подход к размеру экрана: все числа, описывающие размер экрана, выражены в единицах «dp». В основном мы можем использовать
наименьшая ширина dp: наименьшая ширина, доступная для макета приложения в единицах «dp»; это самая маленькая ширина dp, с которой вы когда-либо сталкивались при любом повороте дисплея.
Чтобы создать, щелкните правой кнопкой мыши res >>> new >>> Каталог ресурсов Android.
Из окна Доступных квалификаторов переместите Наименьшую ширину экрана в Выбранные квалификаторы
В окне ширины экрана просто введите значение «dp», начиная с того, что вы хотите, чтобы Android Studio использовала эти размеры.
Затем перейдите в представление проекта , щелкните правой кнопкой мыши новый созданный каталог ресурсов.
new >>> Values resource file введите новое имя файла sizes.xml, и все готово.
источник