Рекомендации
Целью поддержки нескольких экранов является создание приложения, которое может нормально функционировать и хорошо выглядеть на любой из обобщенных конфигураций экранов, поддерживаемых Android.В предыдущих разделах этого документа представлена информация о том, как Android адаптирует ваше приложение к настройкам экрана и как вы можете настроить внешний вид приложения для разных конфигураций экрана.В этом разделе содержатся некоторые дополнительные советы и обзор методов, которые помогают обеспечить правильное масштабирование приложения для разных конфигураций экрана.
Вот краткий контрольный список о том, как обеспечить правильное отображение приложения на разных экранах: 1.Используйте единицы wrap_content, fill_parent или dp при указании размеров в файле макета XML. 2. Не используйте жестко запрограммированные значения пикселей в коде приложения. 3. Не используйте AbsoluteLayout (не рекомендуется). 4.Поставьте альтернативные растровые изображения для разных плотностей экрана.
В следующих разделах содержатся дополнительные сведения.
- Используйте wrap_content, fill_parent или dp для измерений макета
При определении android: layout_width иandroid: layout_height для представлений в файле макета XML с использованием единиц измерения "wrap_content", "fill_parent" или dp гарантирует, что представлению будет присвоен соответствующий размер на экране текущего устройства.
Например, представление срасположение_width = "100dp" измеряет 100 пикселей в ширину на экране средней плотности, и система масштабирует его до 150 пикселей в ширину на экране высокой плотности, так что представление занимает примерно такое же физическое пространство на экране.
Точно так же вы должны предпочесть sp (независимый от масштаба пиксель) для определения размеров текста.Масштабный коэффициент sp зависит от настроек пользователя, и система масштабирует размер так же, как и для dp.
- Не используйте жестко заданные значения пикселей в коде приложения
По соображениям производительности и для упрощения кода система Android использует пиксели в качестве стандартной единицы для выражения значений размеров или координат.Это означает, что размеры представления всегда выражаются в коде с использованием пикселей, но всегда на основе текущей плотности экрана.Например, если myView.getWidth () возвращает 10, представление имеет ширину 10 пикселей на текущем экране, но на устройстве с экраном с более высокой плотностью, возвращаемое значение может быть равно 15. Если вы используете значения пикселей в коде приложения дляДля работы с растровыми изображениями, предварительно не масштабированными для текущей плотности экрана, вам может потребоваться масштабировать значения пикселей, которые вы используете в коде, для соответствия немасштабированному источнику растрового изображения.
Если ваше приложение манипулирует растровыми изображениями илиимеет дело со значениями пикселей во время выполнения, см. раздел ниже о дополнительных соображениях плотности.
- Не использовать AbsoluteLayout
В отличие от других виджетов макетов, AbsoluteLayout обеспечивает использование фиксированныхпозиции для размещения дочерних представлений, что может легко привести к пользовательским интерфейсам, которые плохо работают на разных дисплеях.Из-за этого AbsoluteLayout устарел в Android 1.5 (уровень API 3).
Вместо этого следует использовать RelativeLayout, который использует относительное позиционирование для размещения дочерних представлений.Например, вы можете указать, что виджет кнопки должен появляться «справа» от текстового виджета.
- Использовать ресурсы, зависящие от размера и плотности
Хотя системамасштабирует ваш макет и ресурсы для рисования на основе текущей конфигурации экрана, вы можете внести изменения в пользовательский интерфейс на экранах разных размеров и предоставить растровые рисунки, оптимизированные для разных плотностей.По сути, это повторяет информацию из этого документа ранее.
Если вам необходимо точно контролировать, как ваше приложение будет выглядеть на различных конфигурациях экрана, настройте макеты и растровые изображения в каталогах ресурсов, зависящих от конфигурации.Например, рассмотрим значок, который вы хотите отобразить на экранах средней и высокой плотности.Просто создайте свой значок двух разных размеров (например, 100x100 для средней плотности и 150x150 для высокой плотности) и поместите эти два варианта в соответствующие каталоги, используя соответствующие квалификаторы: res / drawable-mdpi / icon.png // для среднихэкраны плотности / drawable-hdpi / icon.png // для экранов высокой плотности