Программируйте разные макеты для разных версий в android - PullRequest
8 голосов
/ 18 января 2012

Я должен запрограммировать свое Android-приложение с лучшей совместимостью для экранов разных размеров (планшетов и смартфонов) и для версий 2.3, 3.2 и 4.0. Я знаю о возможности называть папки макета как res / layout-sw600dp /. для точного соответствия макета разным размерам экрана.

Итак, поскольку я буду использовать полностью различные макеты для планшетов / смартфонов , я бы начал с «Экран загрузки», который проверяет, какая Android-версия используется и если используется планшет или смартфон-устройство, например, в макете для планшета на некоторых экранах будут кнопки, которых на смартфоне не будет.

Так что мне придется разделить все это на пакеты, например:

  • Общее
  • 2,3
    • Tablet
    • смартфон
  • 3,2
    • Tablet
    • смартфон
  • 4,0
    • Tablet
    • смартфон

Я бы выбрал это разделение, потому что, на мой взгляд, это лучший способ подготовиться к предстоящим * обновлениям *, если, скажем, должна быть добавлена ​​кнопка в панели инструментов в Android 4.0.

Это разделение, на ваш взгляд, хорошая вещь или полная перегрузка?

Существуют ли какие-либо другие новые функции в 4.0, о которых я должен знать?

Ответы [ 2 ]

15 голосов
/ 18 января 2012

Вы также можете назвать свои папки ресурсов, чтобы указать номер версии (например, /res/layout-v11) или (/res/values-v13)

Что касается вашего вопроса о разделении - это действительно зависит от ваших конкретных требований. Распространенным подходом к этой проблеме является резервный механизм: вы предоставляете несколько конкретных макетов (например, макет xlarge landscape v11) и несколько общих, к которым можно обратиться.

Конечно, это «идеалистическое» решение; и это не всегда работает таким образом. Другими словами, практически невозможно реализовать приложение, совместимое со многими версиями Android, исключительно за счет предоставления альтернативных ресурсов. Даже если вы используете библиотеки совместимости (что немного помогает в сокращении кода конкретной версии); вам все равно придется адаптировать свой код в зависимости от версии во время выполнения.

6 голосов
/ 18 января 2012

Вы можете узнать версию Android по Build.VERSION.

В документации рекомендуется проверить Build.VERSION.SDK_INT на соответствие значениям в Build.VERSION_CODES.

И на основании этоговерсия, в которой вы можете установить макеты, если еще условия

...