page.title=Supporting Different Densities parent.title=Designing for Multiple Screens parent.link=index.html trainingnavtop=true previous.title=Supporting Different Screen Sizes previous.link=screensizes.html next.title=Implementing Adaptative UI Flows next.link=adaptui.html @jd:body
NewsReader.zip
В этом уроке рассказывается, как создать интерфейс, поддерживающий разные разрешения экрана, за счет использования разных ресурсов и не зависящих от разрешения единиц измерения.
Разработчики часто допускают одну и ту же ошибку при создании макетов – указывают размеры и расстояния с помощью абсолютных значений в пикселях. Задавать размеры в пикселях не рекомендуется, поскольку из-за различной плотности пикселей на экранах разных устройств фактический размер макета будет неодинаков. Всегда задавайте размеры в единицах 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 предназначена для устройств с разными разрешениями экрана, необходимо позаботиться о наличии растровых изображений для каждого из четырех обобщенных типов разрешения: низкого, среднего, высокого и очень высокого. Это обеспечит оптимальное сочетание качества графики и производительности на всех устройствах.
На основе исходного векторного рисунка создайте растровые изображения для каждого из указанных разрешений согласно следующей шкале размеров:
xhdpi
: 2,0
hdpi
: 1,5
mdpi
: 1,0 (стандартный размер)
ldpi
: 0,75
Это означает, что изображение, которое на устройствах с разрешением экрана xhdpi
имеет размер 200 x 200, на устройствах hdpi
должно иметь размер 150 x 150, на устройствах mdpi
– 100 x 100, а на устройствах ldpi
– 75 x 75.
Поместите файлы изображений в соответствующие подкаталоги в папке res/
, и система автоматически выберет подходящий в зависимости от разрешения экрана устройства, на котором выполняется приложение:
MyProject/ res/ drawable-xhdpi/ awesomeimage.png drawable-hdpi/ awesomeimage.png drawable-mdpi/ awesomeimage.png drawable-ldpi/ awesomeimage.png
При каждом обращении к файлу @drawable/awesomeimage
система будет выбирать изображение, отвечающее разрешению экрана.
Дополнительную информацию и советы можно найти в разделе Рекомендации по созданию значков.