Статьи

Совместимость с Android: работа с фрагментами

В Android 3.0 или Honeycomb были внесены некоторые фундаментальные изменения пользовательского интерфейса, особенно в форме API Fragment. Когда вы читали последний урок о том, как использовать фрагменты, вы, вероятно, думали: «Вау, это здорово, но я не могу ничего из этого использовать, потому что мне нужно нацелиться не только на Motorola Xoom, единственный Android 3.0 устройство в настоящее время на рынке «. К счастью для всех нас, разработчиков, Google выпустил библиотеку под названием «Пакет совместимости Android». Этот пакет обеспечивает поддержку Fragment API, а также другие ключевые новые функции для устройств, начиная с Android 1.6. На момент написания статьи это покрывает 97% всех Android-устройств, активно использующих Android Market . Узнайте, как использовать его в этом кратком совете.

Окончательный пример кода, прилагаемый к этому учебному пособию, доступен для загрузки с открытым исходным кодом с хостинга кодов Google .

В этом руководстве предполагается, что вы начнете с того места, где остановилось наше руководство по API Fragment Вы можете скачать этот код и собрать его оттуда, хотя у вас будут некоторые задачи, которые вам придется выполнять самостоятельно, или вы можете скачать код для этого урока и следовать ему. Выбор ваш.

Прежде чем вы сможете использовать пакет совместимости, вы должны загрузить его. Чтобы сделать это из Eclipse, откройте Android SDK и AVD Manager, нажмите «Доступные пакеты», разверните репозиторий Android, а затем выберите пакет «Совместимость с Android», текущая версия 1. Затем выберите «Установить выбранное» и следуйте инструкциям на экране, включая возможно перезапуск Eclipse.

Установив пакет совместимости, вы теперь должны настроить путь сборки вашего проекта, включив в него нужную нам библиотеку. Для этого выполните следующие действия:

  1. Откройте свойства для проекта
  2. Выберите путь сборки Java
  3. Выберите вкладку «Библиотеки»
  4. Нажмите кнопку «Добавить внешние файлы JAR».
  5. Перейдите в каталог Android SDK, найдите папку extras, затем android, совместимость, v4. Выберите «android-support-v4.jar» и нажмите «Открыть».

Примечание. Возможно, вам придется скопировать JAR-файл в каталог вашего проекта и ссылаться на него с помощью кнопки «Добавить JAR-файлы». В частности, вам, вероятно, потребуется сделать это, если вы используете систему контроля версий или иным образом делитесь своим проектом приложения. Вы увидите, как это сделать, если загрузите код, соответствующий данному руководству.

Внешняя библиотека предоставит интерфейс, который нам нужен для использования 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 в манифесте, чтобы показать это.

Обновление двух классов Activity немного сложнее. Для TutListActivity и TutViewer Activity выполните следующие действия:

  1. Измените Activity, чтобы расширить класс FragmentActivity.
  2. Измените вызов метода getFragmentManager () на метод getSupportFragmentManager ()
  3. Организовать или обновить импорт

Теперь обновите настройку манифеста для minSdkVersion до 4 и targetSdkVersion до 10.

Это все, что нужно сделать. На этом этапе вы можете загрузить приложение практически на любое устройство и запустить его.

Вот пример приложения, работающего на 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.

Как видно из приведенных выше снимков экрана, размер текста и пространство для 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 .

Купить Android-разработку беспроводных приложений, 2-е издание Купить Sam's Teach Yourself для Android-разработки приложений в течение 24 часов Код Мамламбо в Код-Каньоне