Android支持库V26为我们的Android应用程序带来了许多新的特征,包括字体资源,可下载字体、表情符号的支持,一个自适应尺寸的TextView,物理驱动的动画,通过弹簧和一扔,向后兼容的动画的载体,和从minSdkVision14开始增加的一个一个苗条的库。如果不是,你所有的应用程序的minSdkVersion现在应该设置为14。
如果你不熟悉Android支持库,您需要编译与支持库版本相同的Android API级别。换句话说,确保你有你的 设置为8.0 (API 26) 来再次便宜Android支持库V26。到Android 8的支持,在这里你可以按照安装说明:
- Visual Studio 2017 version 15.4.0 Preview 3: Visual Studio Preview Installer
- Visual Studio 2017 for Mac: Beta updater channel
- Visual Studio 2015 Tools for Xamarin: Beta updater channel
XML中的字体支持
你现在可以把字体的新字体资源文件夹。使用 Resources.GetFont 或者 ResourcesCompat.GetFont 在你的应用中加载资源。
例如 在Resources/font文件夹中的XML文件中定义一个字体:
在View中使用字体资源:
NuGet:
https://www.nuget.org/packages/Xamarin.Android.Support.v4/26.0.2-beta1
要求:
API 14+
可下载的字体
有一个新的FontsContractCompat类,允许你从一个字体提供者下载而不是捆绑他们在你的应用程序请求的字体。你可以使用字体供应商通过谷歌的字体(800 +字体)。
用这个,首先创建一个FontRequest:
FontRequest request = new FontRequest( "com.google.android.gms.fonts", "com.google.android.gms", query, Resource.Array.com_google_android_gms_fonts_certs);
其次,你需要登记一个FontRequestCallback实现OnTypefaceRetrieved(Android.Graphics.Typeface typeface)和ontypefacerequestfailed(int的原因)。我们已经创建了一个你可以在这个例子中浏览的样例:
FontsContractCompat.FontRequestCallback callback = new FontRequestCallbackImpl { mActivity = this, mDownloadableFontTextView = DownloadableFontTextView, mRequestDownloadButton = RequestDownloadButton, mProgressBar = progressBar };
最后,您需要请求字体:
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操作系统。这可以防止那些讨厌的豆腐的特点(□)显示!
EmojiCompat有两个主要库: downloadabl或bundled。
可下载的
在博客的可下载字体一节有简要的概述,你首先要构建一个FontRequest来创建一个FontRequestEmojiCompatConfig。
EmojiCompat.Config配置: var fontRequest = new FontRequest( "com.google.android.gms.fonts", "com.google.android.gms", "Noto Color Emoji Compat", Resource.Array.com_google_android_gms_fonts_certs); config = new FontRequestEmojiCompatConfig(this, fontRequest) .SetReplaceAll(true) .RegisterInitCallback(new InitCallbackImpl());
NuGet:
https://www.nuget.org/packages/Xamarin.Android.Support.Emoji/26.0.2-beta1
Bundled
捆绑使生活更容易在约7 MB的捆绑字体的成本。所需的只是创建一个BundledEmojiCompatConfig:
EmojiCompat.Config config; config = new BundledEmojiCompatConfig(this);
NuGet:
https://www.nuget.org/packages/Xamarin.Android.Support.Emoji.Bundled/26.0.2-beta1
表情部件
EmojiCompat库我们提供了三个主要部件显示表情
EmojiTextView, EmojiEditTExt, and EmojiButton
样例工程:
https://github.com/xamarin/monodroid-samples/tree/android-o/android-o/EmojiCompat
要求
API 19+
文本自动调整大小
当容器变大的时候TextView会自动增大文本大小。有三种方法来设置TextView的自动适应尺寸,说明如下:
默认
首先声明android:autoSizeTextType为uniform.
粒度
你也可以为你的TextView定义一个从最小到最大文本尺寸的范围。它会在你的步骤的粒度定义的增量增加。
预设尺寸
最后,你可以指定TextView能够自动调整大小的所有的值。你可以指定一个预设尺寸阵列资源:
10sp 12sp 20sp 40sp 100sp
现在您只需要指定 android:autoSizePresetSizes值,我们已经创建的数组:
NuGet:
https://www.nuget.org/packages/Xamarin.Android.Support.v4/26.0.2-beta1
要求:
API 14+
动态动画
现在你可以使用基于速度的动画而不是持续的。这些动画都是自然的,与物理模拟甩手势或弹簧。
创建我们的第一个动态动画,创建一个包含View,ViewProperty和finalPosition的SpringAnimation对象。
SpringAnimation animX = new SpringAnimation(box, DynamicAnimation.TranslationX, 0);
还有,你可以设置弹簧的两个主要概念:Stiffness 和DampingRatio.
Stiffness 决定如何快速的弹簧会弹回来,当阻尼比确定弹簧弹力。
animX.Spring.SetStiffness(Stiffness); animX.Spring.SetDampingRatio(Damping);
你也可以设置你的动画中的StartVelocity和Start!
animX.SetStartVelocity(velocityTracker.XVelocity); animX.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 (Bonus)
如果你不知道AnimatedVectorDrawableCompat,这是一个非常漂亮的库,用于在路径和路径之间进行渐变,从而创建令人惊叹的动画、徽标转换等等。这些都已经回迁到14的API,它允许这些美丽的动画载体上运行的旧设备。
你可以通过XML创建一个创建你自己的漂亮的动画载体,创建一个 元素并附加 到 定义中。如果你不是最好的动画师,你可以从这里开始以Alex Lockwood的工具:
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在支持库中有许多丰富的特性,可以在应用程序中发挥作用。这些功能通常是向后兼容的minSdkVersion指定的支持库定义的例子。现在是你的机会去探索什么的支持库可以为您提供应用!