【Xamarin.Android】Android支持库V26概述

Android支持库V26为我们的Android应用程序带来了许多新的特征,包括字体资源,可下载字体、表情符号的支持,一个自适应尺寸的TextView,物理驱动的动画,通过弹簧和一扔,向后兼容的动画的载体,和从minSdkVision14开始增加的一个一个苗条的库。如果不是,你所有的应用程序的minSdkVersion现在应该设置为14。

如果你不熟悉Android支持库,您需要编译与支持库版本相同的Android API级别。换句话说,确保你有你的 设置为8.0 (API 26) 来再次便宜Android支持库V26。到Android 8的支持,在这里你可以按照安装说明:

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();

img_9e91e21905a2f5d665d3ca06ddfb88aa.gif

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,它允许这些美丽的动画载体上运行的旧设备。

img_883c26373cd4196835f6b1b89b109223.gif

你可以通过XML创建一个创建你自己的漂亮的动画载体,创建一个 元素并附加 到 定义中。如果你不是最好的动画师,你可以从这里开始以Alex Lockwood的工具:

img_4fe76bfefcb9c941c03ee93ea31a623a.gif

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指定的支持库定义的例子。现在是你的机会去探索什么的支持库可以为您提供应用!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值