26 версия Android SDK принесла новые возможности в наши Андроид приложения, включая шрифты как ресурсы, загружаемые шрифты, поддержка эмоджи, автоматические размеры TextView, управляемые физикой анимации через Spring and Fling, обратная совместимость для векторных анимаций, и уменьшения библиотеки при помощи повышения минимальной версии sdk до 14.
Если вы не знакомы с Android Support Library, то знайте, что вам нужно компилировать приложение на том же уровне Android API, что и последняя версия Android Support Library. Другими словами, убедитесь, что тег TargetFramework установлен на 8.0 (API 26). В таком случае приложения скомпилируется при помощи последней версии Android Support Library(V26).
Теперь вы можете помещать шрифты в новую папку ресурсов шрифта font. Используйте Resources.GetFont или ResourcesCompat.GetFont, чтобы скачать ресурсы шрифта в ваше приложение.
Пример: определение шрифта в XML в папке Resourcesfont:
Использование ресурса шрифта в View:
NuGet:
https://www.nuget.org/packages/Xamarin.Android.Support.v4/26.0.2-beta1
Требование: API 14+
Есть новый класс FontsContractCompat, который позволит вам запрашивать шрифты у провайдера шрифтов вместо пакетирования их внутри вашего приложения. Вы можете использовать провайдер шрифтов из Google Fonts (800+шрифтов).
Чтобы использовать его, сначала создайте FontRequest:
Во-вторых, вам нужно зарегистрировать FontRequestCallback, который внедряет OnTypefaceRetrieved(Android.Graphics.Typeface typeface) и OnTypefaceRequestFailed(int reason). Мы создали один, который вы можете использовать, в этом примере:
Наконец, вам нужно запросить шрифт:
FontsContractCompat.RequestFont(this, request, callback, GetHandlerThreadHandler());
Вы можете также запросить шрифт непосредственно в XML:
NuGet:
https://www.nuget.org/packages/Xamarin.Android.Support.v4/26.0.2-beta1
Пример проекта:
https://github.com/xamarin/monodroid-samples/tree/android-o/android-o/DownloadableFonts
Требование:
API 14+
Google Play Services 11+
Вспомогательная библиотека EmojiCompat позволит вашим устройствам пользоваться самыми новыми эмодзи, не требуя обновления Android OS. Это помогает избежать изображения надоевших пустых квадратиков (□)!
EmojiCompat имеет две основных библиотеки: скачиваемую или пакетную.
Как было отмечено выше в разделе «Скачиваемые шрифты» этого поста, сначала вам нужно сформировать FontRequest, чтобы создать FontRequestEmojiCompatConfig.
NuGet
https://www.nuget.org/packages/Xamarin.Android.Support.Emoji/26.0.2-beta1
Пакетная библиотека делает жизнь немного легче примерно за 7 Мбит пакетного шрифта. Все, что вам нужно, это создать BundledEmojiCompatConfig:
NuGet
https://www.nuget.org/packages/Xamarin.Android.Support.Emoji.Bundled/26.0.2-beta1
Библиотека EmojiCompat обеспечивает нас тремя основными элементами для отображения эмодзи:
EmojiTextView, EmojiEditTExt, и EmojiButton
Пример проекта:
https://github.com/xamarin/monodroid-samples/tree/android-o/android-o/EmojiCompat
Требование:
API 19+
Ваш TextView теперь автоматически увеличивает размер текста, когда увеличивается контейнер. Есть три способа, которыми вы можете задать автоматический выбор размера TextView, и они объяснены ниже.
Начните с описания android:autoSizeTextType как uniform.
Вы можете также определить диапазон между минимальным и максимальным размером текста для вашего TextView. Он может также увеличиваться пошагово согласно заданной вами степени разбивки.
Наконец, вы можете указать все значения, которые TextView может использовать при автоматическом выборе размера. Вы можете указать ресурс массива ранее заданных размеров:
Теперь вам нужно только указать значение android:autoSizePresetSizes для массива, который мы уже создали:
NuGet:
https://www.nuget.org/packages/Xamarin.Android.Support.v4/26.0.2-beta1
Требование:
API 14+
Теперь вы можете использовать анимацию на основе скорости вместо анимации на основе длительности. Такая анимация выглядит более натурально, с движениями, которые имитируют резкое движение или пружину.
Чтобы создать нашу первую динамическую анимацию, создайте новый объект SpringAnimation, используя View, ViewProperty и finalPosition.
SpringAnimation animX = new SpringAnimation(box, DynamicAnimation.TranslationX, 0);
Есть две основных концепции, которые вы можете задать для пружины: Stiffness и DampingRatio.
Stiffness определяет, как быстро пружина возвращается в исходное состояние, а DampingRatio определяет, насколько пружина упругая.
Затем вы можете задать вашу скорость StartVelocity и запустить(Start) анимацию!
NuGet
https://www.nuget.org/packages/Xamarin.Android.Support.Dynamic.Animation/26.0.2-beta1
Пример проекта
https://github.com/JonDouglas/AndroidSupportv26Samples/tree/master/SpringAnimationSample
Требование
API 14+
Если вы не знаете о AnimatedVectorDrawableCompat, то это красивая стильная библиотека для переходов между путями и интерполяции вдоль пути с целью создания ошеломляющих анимаций, трансформации логотипов и многого другого. Все они теперь привязаны к API 14, который позволяет этим красивым анимационным векторам работать с более старыми устройствами.
Вы можете создать ваши собственные красивые анимации в векторной графике с помощью XML, создав элемент animated-vector и приложив pathInterpolators к определенному objectAnimator. Если вы не лучший аниматор на свете, вы можете начать здесь с помощью инструмента Алекса Локвуда:
NuGet:
https://www.nuget.org/packages/Xamarin.Android.Support.Animated.Vector.Drawable/26.0.2-beta1
Пример проекта:
https://github.com/JonDouglas/AndroidSupportv26Samples/tree/master/EndlessPinJump
https://github.com/JonDouglas/AndroidSupportv26Samples/tree/master/AndroidToAppleVectorLogo
Требование:
API 14+
Есть много хороших характеристик, которые Android предоставляет в пределах своих вспомогательных библиотек, которые вы можете использовать при разработке приложений на Xamarin. Эти характеристики обычно совместимы с предыдущими версиями minSdkVersion, которые определяются вспомогательной библиотекой. Теперь у вас есть шанс исследовать, что вспомогательные библиотеки могут дать вашим приложениям!
Источник: статья Джона Дугласа «Android Support Library v26 Overview» от 2 октября 2017 года.