В этом уроке рассказывается, как работать с экранами разного разрешения с помощью не зависящих от разрешения пикселей и как подготовить растровые изображения для каждого из них.
Как создать интерфейс, поддерживающий разные разрешения экрана, за счет использования разных ресурсов и не зависящих от разрешения единиц измерения.
Скачать исходный код учебного приложения можно здесь
Использование пикселей, не зависящих от разрешения
Разработчики часто допускают одну и ту же ошибку при создании макетов – указывают размеры и расстояния с помощью абсолютных значений в пикселях. Задавать размеры в пикселях не рекомендуется, поскольку из-за различной плотности пикселей на экранах разных устройств фактический размер макета будет неодинаков. Всегда задавайте размеры в единицах dp
или sp
. dp
– это не зависящий от разрешения пиксель, равный физическому пикселю на экране с плотностью 160 точек/дюйм. sp
является аналогичной единицей измерения, но масштабируется на основе выбранного пользователем размера текста, поэтому ее следует применять для указания величины шрифта, но не размера макета.
Например, если вы задаете расстояние между двумя представлениями, рекомендуется использовать dp
, а не px
:
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/clickme" android:layout_marginTop="20dp" />
Для определения размера шрифта всегда используйте sp
:
<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="20sp" />
Предоставление альтернативных растровых изображений
Так как платформа Android предназначена для устройств с разными разрешениями экрана, необходимо позаботиться о наличии растровых изображений для каждого из четырех обобщенных типов разрешения: низкого, среднего, высокого и очень высокого. Это обеспечит оптимальное сочетание качества графики и производительности на всех устройствах.
На основе исходного векторного рисунка создайте растровые изображения для каждого из указанных разрешений согласно следующей шкале размеров:
xxxhdpi
: 4,0xxhdpi
: 3,0xhdpi
: 2,0hdpi
: 1,5mdpi
: 1,0 (стандартный размер)ldpi
: 0,75
Это означает, что изображение, которое на устройствах с разрешением экрана xxxhdpi
имеет размер 400 x 400, на устройствах xxhdpi должно иметь размер 300 x 300, на устройствах xhdpi – 200 x 200, на устройствах hdpi – 150 x 150, на устройствах mdpi
– 100 x 100, а на устройствах ldpi
– 75 x 75.
Что касается размеров экранов, то mdpi
является базовой точкой отсчёта и соответствует размеру экрана 320х480 пикселей, hdpi – 480×720, xhdpi – 640×960, далее считайте по таблице выше.
Поместите файлы изображений в соответствующие подкаталоги в папке res/ (при необходимости создайте подкаталог с нужным квалификатором)
, и система автоматически выберет подходящий в зависимости от разрешения экрана устройства, на котором выполняется приложение:
MyProject/ res/ drawable-xhdpi/ awesomeimage.png drawable-hdpi/ awesomeimage.png drawable-mdpi/ awesomeimage.png drawable-ldpi/ awesomeimage.png
При каждом обращении к файлу @drawable/awesomeimage
система будет выбирать изображение, отвечающее разрешению экрана.
Дополнительную информацию и советы можно найти в разделе Рекомендации по созданию значков.
Перевод с сайта developer.android.com. Если не указано иное, этот контент распространяется под лицензией Creative Commons Attribution 2.5. Для получения дополнительной информации и ограничений, см. Лицензия контента.
Читайте также:
Реализация адаптивного пользовательского интерфейса в Android