В Android 3.0 или Honeycomb были внесены некоторые фундаментальные изменения пользовательского интерфейса, особенно в форме API Fragment. Когда вы читали последний урок о том, как использовать фрагменты, вы, вероятно, думали: «Вау, это здорово, но я не могу ничего из этого использовать, потому что мне нужно нацелиться не только на Motorola Xoom, единственный Android 3.0 устройство в настоящее время на рынке «. К счастью для всех нас, разработчиков, Google выпустил библиотеку под названием «Пакет совместимости Android». Этот пакет обеспечивает поддержку Fragment API, а также другие ключевые новые функции для устройств, начиная с Android 1.6. На момент написания статьи это покрывает 97% всех Android-устройств, активно использующих Android Market . Узнайте, как использовать его в этом кратком совете.
Окончательный пример кода, прилагаемый к этому учебному пособию, доступен для загрузки с открытым исходным кодом с хостинга кодов Google .
Шаг 0: Начало работы
В этом руководстве предполагается, что вы начнете с того места, где остановилось наше руководство по API Fragment Вы можете скачать этот код и собрать его оттуда, хотя у вас будут некоторые задачи, которые вам придется выполнять самостоятельно, или вы можете скачать код для этого урока и следовать ему. Выбор ваш.
Шаг 1: Загрузка пакета
Прежде чем вы сможете использовать пакет совместимости, вы должны загрузить его. Чтобы сделать это из Eclipse, откройте Android SDK и AVD Manager, нажмите «Доступные пакеты», разверните репозиторий Android, а затем выберите пакет «Совместимость с Android», текущая версия 1. Затем выберите «Установить выбранное» и следуйте инструкциям на экране, включая возможно перезапуск Eclipse.
Шаг 2: Настройка пути сборки
Установив пакет совместимости, вы теперь должны настроить путь сборки вашего проекта, включив в него нужную нам библиотеку. Для этого выполните следующие действия:
- Откройте свойства для проекта
- Выберите путь сборки Java
- Выберите вкладку «Библиотеки»
- Нажмите кнопку «Добавить внешние файлы JAR».
- Перейдите в каталог Android SDK, найдите папку extras, затем android, совместимость, v4. Выберите «android-support-v4.jar» и нажмите «Открыть».
Примечание. Возможно, вам придется скопировать JAR-файл в каталог вашего проекта и ссылаться на него с помощью кнопки «Добавить JAR-файлы». В частности, вам, вероятно, потребуется сделать это, если вы используете систему контроля версий или иным образом делитесь своим проектом приложения. Вы увидите, как это сделать, если загрузите код, соответствующий данному руководству.
Шаг 3: Обновление цели сборки проекта
Внешняя библиотека предоставит интерфейс, который нам нужен для использования API Fragment. Мы не используем ничего из Android 3.0 (специально), поэтому нам больше не нужно полагаться на Android 3.0 SDK. Вместо этого переключите цель сборки проекта на API Level 10 (Android 2.3.3). Когда вы сделаете это, вы заметите несколько ошибок компиляции. Исправить ошибки компиляции в TutListFragment и TutViewerFragment тривиально: просто откройте их и нажмите ctrl-shift-o для автоматического переключения операторов импорта на соответствующие API из библиотеки совместимости вместо библиотек Android 3.0.
Почему Android 2.3.3 вместо Android 1.6? Прежде всего это делается для того, чтобы избежать изменения ссылок макета на «match_parent» с «fill_parent». Окончательное приложение будет совместимо с 1.6, и мы будем обновлять или minSdkVersion в манифесте, чтобы показать это.
Шаг 4. Переключение на вспомогательную версию упражнения
Обновление двух классов Activity немного сложнее. Для TutListActivity и TutViewer Activity выполните следующие действия:
- Измените Activity, чтобы расширить класс FragmentActivity.
- Измените вызов метода getFragmentManager () на метод getSupportFragmentManager ()
- Организовать или обновить импорт
Шаг 5: Обновление манифеста
Теперь обновите настройку манифеста для minSdkVersion до 4 и targetSdkVersion до 10.
Шаг 6: Запуск приложения
Это все, что нужно сделать. На этом этапе вы можете загрузить приложение практически на любое устройство и запустить его.
Вот пример приложения, работающего на Nexus S под управлением Android 2.3.3 с разрешением 800×480:
Вот он на Galaxy Tab под управлением Android 2.2 с разрешением 1024×600:
И, наконец, вот он на T-Mobile G1 под управлением Android 1.6 с разрешением 480×320:
Конечно, он все еще работает и выглядит так же на Motorola Xoom.
Шаг 7: Обновление макетов (необязательно)
Как видно из приведенных выше снимков экрана, размер текста и пространство для WebView зависят от устройства. Двойной взгляд не особенно практичен на G1. Вы можете настроить различные макеты для свойств разностного устройства для обработки таких ситуаций. Если ваш рабочий процесс интерфейса пользователя вписывается в парадигму единого или двойного представления, которую поддерживает код, дальнейшее кодирование не потребуется.
Пакет совместимости
Помимо API Fragment, пакет совместимости также предоставляет версию API Loader для использования на старых устройствах. Учитывая, что в этом пакете уже доступны два API, а ярлык — Revision 1, мы можем только надеяться, что Google приложит некоторые усилия для того, чтобы в будущем добавить более фундаментальные API к более старым версиям SDK.
Использование пакета совместимости делает ваш пакет приложений больше. Например, APK для нашего примера приложения вырос с 20 КБ до 71 КБ. Хотя это существенное изменение, накладные расходы в 51 КБ обеспечивают достаточную выгоду, и мы считаем, что это очень полезно.
Вывод
Используя пакет Android Compatibility, вы взяли приложение с поддержкой фрагментов, которое работало только на устройствах Android 3.0 и сделало его совместимым с устройствами вплоть до T-Mobile G1 — самого первого устройства Android. Это хорошая новость для разработчиков и пользователей. Теперь разработчики могут использовать API Fragment для любого приложения, которое они хотят!
Об авторах
Разработчики мобильных приложений Лорен Дарси и Шейн Кондер являются соавторами нескольких книг по разработке Android: углубленная книга по программированию под названием « Разработка беспроводных приложений для Android» и « Самс научи себя разрабатывать приложения для Android за 24 часа» . Когда они не пишут, они тратят свое время на разработку мобильного программного обеспечения в своей компании и оказание консультационных услуг. С ними можно связаться по электронной почте [email protected] , через их блог на androidbook.blogspot.com и в Twitter @androidwireless .