Уровень API: 13
Android 3.2 ( HONEYCOMB_MR2
) — это дополнительная версия платформы, которая добавляет новые возможности для пользователей и разработчиков. В разделах ниже представлен обзор новых функций и API-интерфейсов для разработчиков.
Для разработчиков платформа Android 3.2 доступна в виде загружаемого компонента Android SDK. Загружаемая платформа включает в себя библиотеку Android и образ системы, а также набор скинов эмулятора и многое другое. Чтобы начать разработку или тестирование для Android 3.2, используйте Android SDK Manager, чтобы загрузить платформу в свой SDK.
Основные характеристики платформы
Новые возможности пользователя
- Оптимизации для более широкого спектра планшетов.
Android 3.2 включает в себя множество оптимизаций всей системы, чтобы обеспечить удобство работы на более широком спектре планшетных устройств.
- Масштаб совместимости для приложений фиксированного размера
В Android 3.2 представлен новый режим масштабирования совместимости , который дает пользователям новый способ просмотра приложений фиксированного размера на больших устройствах. Новый режим представляет собой пиксельную альтернативу стандартному растяжению пользовательского интерфейса для приложений, которые не предназначены для работы на экранах большего размера, например на планшетах. Новый режим доступен пользователям через значок меню на системной панели для приложений, которым требуется поддержка совместимости.
- Синхронизация мультимедиа с SD-карты
На устройствах, поддерживающих SD-карту, пользователи теперь могут загружать медиафайлы непосредственно с SD-карты в приложения, которые их используют. Системное средство делает файлы доступными для приложений из системного хранилища мультимедиа.
Новые возможности разработчика
- Расширенная поддержка API для управления экранами
В Android 3.2 представлены расширения API поддержки экрана платформы, которые предоставляют разработчикам дополнительные способы управления пользовательским интерфейсом приложений на различных устройствах под управлением Android. API включает в себя новые квалификаторы ресурсов и новые атрибуты манифеста, которые дают вам более точный контроль над тем, как ваши приложения отображаются в разных размерах, вместо того, чтобы полагаться на обобщенные категории размеров.
Чтобы обеспечить наилучшее отображение приложений фиксированного размера и приложений с ограниченной поддержкой различных размеров экрана, платформа также предоставляет новый режим совместимости с масштабированием, который отображает пользовательский интерфейс на меньшей области экрана, а затем масштабирует его, чтобы заполнить доступное пространство на экране. дисплей. Дополнительные сведения об API поддержки экрана и предоставляемых им элементах управления см. в разделах ниже.
Обзор API
API поддержки экранов
В Android 3.2 представлены новые API-интерфейсы поддержки экранов, которые дают вам больше контроля над отображением приложений на экранах разных размеров. API основан на существующем API поддержки экранов, включая обобщенную модель плотности экрана платформы, но расширяет его за счет возможности точно нацеливаться на определенные диапазоны экранов по их размерам, измеряемым в независимых от плотности единицах пикселей (например, 600dp или 720dp в ширину). , а не по их обобщенным размерам экрана (например, большой или xlarge).
При разработке пользовательского интерфейса приложения вы по-прежнему можете рассчитывать на то, что платформа обеспечит абстракцию плотности, а это означает, что приложениям не нужно компенсировать различия в фактической плотности пикселей на разных устройствах. Пользовательский интерфейс приложения можно спроектировать в соответствии с количеством доступного горизонтального или вертикального пространства. Платформа выражает объем доступного пространства с помощью трех новых характеристик: smallWidth , width и height .
- Наименьшая ширина экрана — это его фундаментальный минимальный размер, измеряемый в единицах пикселей, не зависящих от плотности («dp»). Из высоты или ширины экрана он короче. Для экрана в книжной ориентации наименьшая ширина обычно зависит от его ширины, а в альбомной ориентации — от его высоты. Во всех случаях наименьшая ширина получается из фиксированной характеристики экрана, и значение не меняется независимо от ориентации. Наименьшая ширина важна для приложений, поскольку она представляет собой минимально возможную ширину, в которой необходимо будет отрисовать пользовательский интерфейс приложения, не включая области экрана, зарезервированные системой.
- Напротив, ширина и высота экрана представляют собой текущее горизонтальное или вертикальное пространство, доступное для макета приложения, измеренное в единицах «dp», не включая области экрана, зарезервированные системой. Ширина и высота экрана изменяются, когда пользователь переключает ориентацию между альбомной и книжной ориентацией.
Новый API поддержки экранов позволяет вам управлять пользовательским интерфейсом приложения в соответствии с наименьшей шириной текущего экрана. При необходимости вы также можете управлять пользовательским интерфейсом в соответствии с текущей шириной или высотой. Для этих целей API предоставляет следующие инструменты:
- Новые квалификаторы ресурсов для ориентации макетов и других ресурсов на минимальную наименьшую ширину, ширину или высоту, а также
- Новые атрибуты манифеста для указания максимального диапазона совместимости экрана приложения.
Кроме того, приложения по-прежнему могут запрашивать систему и управлять загрузкой пользовательского интерфейса и ресурсов во время выполнения, как и в предыдущих версиях платформы.
Поскольку новый API позволяет более точно ориентироваться на экраны с помощью наименьшей ширины, ширины и высоты, полезно понять типичные характеристики различных типов экранов. В таблице ниже приведены некоторые примеры, измеренные в единицах «dp».
Тип | Плотность (обобщенная) | Размеры (дп) | наименьшая ширина (дп) |
---|---|---|---|
Базовый телефон | мдпи | 320x480 | 320 |
Маленький планшет/большой телефон | мдпи | 480x800 | 480 |
7-дюймовый планшет | мдпи | 600x1024 | 600 |
10-дюймовый планшет | мдпи | 800x1280 | 800 |
В разделах ниже представлена дополнительная информация о новых квалификаторах экрана и атрибутах манифеста. Полную информацию о том, как использовать API поддержки экрана, см. в разделе «Поддержка нескольких экранов» .
Новые квалификаторы ресурсов для поддержки экранов
Новые квалификаторы ресурсов в Android 3.2 позволяют лучше ориентировать макеты на различные размеры экрана. Используя квалификаторы, вы можете создавать конфигурации ресурсов, предназначенные для определенного минимального значения smallWidth, текущей ширины или текущей высоты, измеренных в независимых от плотности пикселях.
Новые квалификаторы:
-
swNNNdp
— указывает минимальную наименьшую ширину, при которой должен использоваться ресурс, измеряется в единицах «dp». Как упоминалось выше, наименьшая ширина экрана является постоянной, независимо от ориентации. Примеры:sw320dp
,sw720dp
,sw720dp
. -
wNNNdp
иhNNNdp
— определяет минимальную ширину или высоту, на которой должен использоваться ресурс, измеряется в единицах «dp». Как упоминалось выше, ширина и высота экрана зависят от его ориентации и изменяются при каждом изменении ориентации. Примеры:w320dp
,w720dp
,h1024dp
.
При необходимости вы также можете создать несколько перекрывающихся конфигураций ресурсов. Например, вы можете пометить некоторые ресурсы для использования на любом экране с разрешением более 480 dp, другие — более 600 dp и третьи — более 720 dp. Если для данного экрана подходят несколько конфигураций ресурсов, система выбирает конфигурацию, которая наиболее соответствует. Для точного контроля над тем, какие ресурсы загружаются на данном экране, вы можете пометить ресурсы одним квалификатором или объединить несколько новых или существующих квалификаторов.
Основываясь на типичных размерах, перечисленных ранее, вот несколько примеров того, как можно использовать новые квалификаторы:
res/layout/main_activity.xml # For phones res/layout-sw600dp/main_activity.xml # For 7” tablets res/layout-sw720dp/main_activity.xml # For 10” tablets res/layout-w600dp/main_activity.xml # Multi-pane when enough width res/layout-sw600dp-w720dp/main_activity.xml # For large width
Старые версии платформы будут игнорировать новые квалификаторы, поэтому вы можете смешивать их по мере необходимости, чтобы ваше приложение отлично выглядело на любом устройстве. Вот несколько примеров:
res/layout/main_activity.xml # For phones res/layout-xlarge/main_activity.xml # For pre-3.2 tablets res/layout-sw600dp/main_activity.xml # For 3.2 and up tablets
Полную информацию о том, как использовать новые квалификаторы, см. в разделе Использование новых квалификаторов размера .
Новые атрибуты манифеста для совместимости по размеру экрана.
Платформа предлагает новый набор атрибутов манифеста <supports-screens>
, которые позволяют вам управлять поддержкой вашего приложения для экранов разных размеров. В частности, вы можете указать самый большой и самый маленький экраны, на которых предназначено ваше приложение, а также самый большой экран, на котором оно предназначено для запуска без необходимости использования нового режима совместимости экрана системы. Как и квалификаторы ресурсов, описанные выше, новые атрибуты манифеста указывают диапазон экранов, поддерживаемых приложением, как указано в наименьшем значении Width.
Новые атрибуты манифеста для поддержки экрана:
-
android:compatibleWidthLimitDp=" numDp"
— этот атрибут позволяет указать максимальную наименьшую ширину, при которой приложение может работать без необходимости режима совместимости. Если текущий экран больше указанного значения, система отображает приложение в обычном режиме, но позволяет пользователю при необходимости переключиться в режим совместимости с помощью настройки на системной панели. -
android:largestWidthLimitDp=" numDp "
— этот атрибут позволяет указать максимальную наименьшую ширину, для которой предназначено приложение. Если текущий экран больше указанного значения, система переводит приложение в режим совместимости экранов, чтобы обеспечить наилучшее отображение на текущем экране. -
android:requiresSmallestWidthDp=" numDp"
— этот атрибут позволяет указать минимальную наименьшую ширину, при которой приложение может работать. Если текущий экран меньше заданного значения, система считает приложение несовместимым с устройством, но не препятствует его установке и запуску.
Примечание. Google Play в настоящее время не фильтрует приложения по любому из вышеуказанных атрибутов. Поддержка фильтрации будет добавлена в более поздней версии платформы. Приложения, которым требуется фильтрация по размеру экрана, могут использовать существующие атрибуты <supports-screens>
.
Полную информацию о том, как использовать новые атрибуты, см. в разделе «Объявление поддержки размера экрана» .
Режим совместимости экрана
Android 3.2 предоставляет новый режим совместимости экранов для приложений, явно заявляющих, что они не поддерживают экраны такого размера, как тот, на котором они работают. Этот новый режим масштабирования масштабируется по пикселям: он отображает приложение на меньшей области экрана, а затем масштабирует пиксели для заполнения текущего экрана.
По умолчанию система предлагает режим совместимости экрана в качестве пользовательской опции для приложений, которым он требуется. Пользователи могут включать и выключать режим масштабирования с помощью элемента управления, доступного на системной панели.
Поскольку новый режим совместимости экрана может подходить не для всех приложений, платформа позволяет приложению отключать его с помощью атрибутов манифеста. Если приложение отключено, система не предлагает режим совместимости «зум» в качестве опции для пользователей во время работы приложения.
Примечание. Важную информацию о том, как управлять режимом совместимости в ваших приложениях, можно найти в статье «Новый режим для приложений на больших экранах» в блоге разработчиков Android.
Новая плотность экрана для телевизоров с разрешением 720p и аналогичных устройств.
Чтобы удовлетворить потребности приложений, работающих на телевизорах с разрешением 720p или аналогичных устройствах с экранами средней плотности, в Android 3.2 представлена новая обобщенная плотность tvdpi
с приблизительным разрешением 213 точек на дюйм. Приложения могут запрашивать новую плотность в densityDpi
и использовать новый квалификатор tvdpi
для пометки ресурсов для телевизоров и подобных устройств. Например:
res/drawable-tvdpi/my_icon.png # Bitmap for tv density
В общем, приложениям не обязательно работать с такой плотностью. В ситуациях, когда требуется вывод на экран с разрешением 720p, элементы пользовательского интерфейса могут автоматически масштабироваться платформой.
Фреймворк пользовательского интерфейса
- Фрагменты
- Новый класс
Fragment.SavedState
содержит информацию о состоянии, полученную из экземпляра фрагмента с помощьюsaveFragmentInstanceState()
. - Новый метод
saveFragmentInstanceState()
сохраняет текущее состояние экземпляра данного фрагмента. Состояние можно использовать позже при создании нового экземпляра фрагмента, соответствующего текущему состоянию. - Новый метод
setInitialSavedState()
устанавливает исходное сохраненное состояние для фрагмента при его первом создании. - Новый метод обратного вызова
onViewCreated()
уведомляет фрагмент о том, чтоonCreateView()
вернулся, но до того, как какое-либо сохраненное состояние будет восстановлено в представлении. -
isDetached()
определяет, был ли фрагмент явно отсоединен от пользовательского интерфейса. - Новые методы
attach()
иdetach()
позволяют приложению повторно присоединять или отсоединять фрагменты пользовательского интерфейса. - Новый метод перегрузки
setCustomAnimations()
позволяет вам устанавливать определенные ресурсы анимации для запуска операций входа/выхода и, в частности, при извлечении обратного стека. Существующая реализация не учитывает различное поведение фрагментов при извлечении обратного стека.
- Новый класс
- Информация о размере экрана в ActivityInfo и ApplicationInfo.
-
ActivityInfo
добавляетCONFIG_SCREEN_SIZE
иCONFIG_SMALLEST_SCREEN_SIZE
в качестве битовых масок вconfigChanges
. Биты указывают, может ли действие самостоятельно обрабатывать размер экрана и наименьший размер экрана. -
ApplicationInfo
добавляет поляlargestWidthLimitDp
,compatibleWidthLimitDp
иrequiresSmallestWidthDp
, полученные из соответствующих атрибутов<supports-screens>
в файле манифеста приложения.
-
- Помощники для получения размера дисплея из WindowManager
- Новые методы
getSize()
иgetRectSize()
позволяют приложениям получать необработанный размер дисплея.
- Новые методы
- Новые публичные «голографические» стили
- Платформа теперь предоставляет множество общедоступных «голографических» стилей для текста, виджетов панели действий, вкладок и многого другого. Полный список см.
R.style
.
- Платформа теперь предоставляет множество общедоступных «голографических» стилей для текста, виджетов панели действий, вкладок и многого другого. Полный список см.
-
LocalActivityManager
,ActivityGroup
иLocalActivityManager
устарели.- Новые приложения должны использовать фрагменты вместо этих классов. Чтобы продолжить работу на более старых версиях платформы, вы можете использовать библиотеку поддержки v4 (библиотеку совместимости), доступную в Android SDK. Библиотека поддержки v4 предоставляет версию Fragment API, совместимую с Android 1.6 (уровень API 4).
- Для приложений, разрабатываемых под Android 3.0 (уровень API 11) или выше, вкладки обычно представлены в пользовательском интерфейсе с помощью нового
ActionBar.newTab()
и связанных API для размещения вкладок в области панели действий.
Медиа-фреймворк
- Приложения, использующие медиа-провайдера платформы (
MediaStore
), теперь могут считывать мультимедийные данные непосредственно со съемной SD-карты, если это поддерживается устройством. Приложения также могут напрямую взаимодействовать с файлами SD-карты, используя MTP API.
Графика
- Управляемые утилиты в Point и PointF
- Классы
Point
иPointF
теперь включают интерфейсParcelable
и служебные методыdescribeContents()
,readFromParcel()
иwriteToParcel()
.
- Классы
Структура IME
- Новый метод
getModifiers()
для получения текущего состояния клавиш-модификаторов.
USB-фреймворк
- Новый метод
getRawDescriptors()
для получения необработанных дескрипторов USB для устройства. Вы можете использовать этот метод для доступа к дескрипторам, которые не поддерживаются напрямую через API более высокого уровня.
Сеть
- Константы типа сети
-
ConnectivityManager
добавляет константыTYPE_ETHERNET
иTYPE_BLUETOOTH
.
-
Телефония
- Новая константа типа сети
NETWORK_TYPE_HSPAP
.
Основные утилиты
- Частные коммунальные услуги
- Новый интерфейс
Parcelable.ClassLoaderCreator
позволяет приложению получать ClassLoader, в котором создается объект. - Новые
adoptFd
,dup()
иfromFd()
для управления объектамиParcelFileDescriptor
.
- Новый интерфейс
- Биндер и IBinder
- Новый метод
dumpAsync()
вBinder
иIBinder
позволяет приложениям выгружать данные в указанный файл, гарантируя асинхронное выполнение целевого объекта. - Новый код транзакции протокола
IBinder
TWEET_TRANSACTION
позволяет приложениям отправлять твит целевому объекту.
- Новый метод
Новые константы функций
Платформа добавляет новые константы аппаратных функций, которые вы можете объявить в манифестах приложений, чтобы информировать внешние объекты, такие как Google Play, о необходимых аппаратных и программных возможностях. Эти и другие константы функций объявляются в элементах манифеста <uses-feature>
.
Google Play фильтрует приложения на основе их атрибутов <uses-feature>
, чтобы гарантировать, что они доступны только для устройств, на которых они соответствуют их требованиям.
- Константы функций для требований альбомной или портретной ориентации
В Android 3.2 представлены новые константы функций, которые позволяют приложениям указывать, требуется ли им отображение в альбомной, книжной или обеих ориентациях. Объявление этих констант означает, что приложение нельзя устанавливать на устройство, которое не поддерживает соответствующую ориентацию. И наоборот, если одна или обе константы не объявлены, это указывает на то, что приложение не отдает предпочтение необъявленным ориентациям и может быть установлено на устройстве, которое их не предлагает.
-
android.hardware.screen.landscape
— приложение требует отображения в альбомной ориентации. -
android.hardware.screen.portrait
— для приложения требуется портретная ориентация экрана.
Типичному приложению, которое правильно работает как в альбомной, так и в книжной ориентации, обычно не требуется объявлять требование ориентации. Скорее, приложение, разработанное в первую очередь для одной ориентации, например приложение, предназначенное для телевизора, может объявить одну из констант, чтобы гарантировать, что она недоступна для устройств, которые не обеспечивают эту ориентацию.
Если какие-либо действия, объявленные в запросе манифеста, выполняются в определенной ориентации с использованием атрибута
android:screenOrientation
, это также означает, что приложению требуется такая ориентация. -
- Другие константы функций
-
android.hardware.faketouch.multitouch.distinct
— приложению необходима поддержка эмулируемого мультитач-ввода с четким отслеживанием двух и более точек. -
android.hardware.faketouch.multitouch.jazzhand
— приложению необходима поддержка эмулируемого мультитач-ввода с четким отслеживанием пяти и более точек.
-
Отчет о различиях API
Подробное описание всех изменений API в Android 3.2 (уровень API 13) см. в отчете о различиях API .
Уровень API
Платформа Android 3.2 предоставляет обновленную версию API платформы. API Android 3.2 присвоен целочисленный идентификатор — 13 , который хранится в самой системе. Этот идентификатор, называемый «уровнем API», позволяет системе правильно определить, совместимо ли приложение с системой, до его установки.
Чтобы использовать API-интерфейсы, представленные в Android 3.2, в вашем приложении, вам необходимо скомпилировать приложение с помощью библиотеки Android, предоставляемой на платформе Android 3.2 SDK. В зависимости от ваших потребностей вам также может потребоваться добавить атрибут android:minSdkVersion="13"
к элементу <uses-sdk>
в манифесте приложения.
Для получения дополнительной информации прочитайте «Что такое уровень API?».