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

简介: Android支持库V26为我们的Android应用程序带来了许多新的特征,包括字体资源,可下载字体、表情符号的支持,一个自适应尺寸的TextView,物理驱动的动画,通过弹簧和一扔,向后兼容的动画的载体,和从minSdkVision14开始增加的一个一个苗条的库。

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

目录
相关文章
|
19天前
|
安全 Java 网络安全
Android远程连接和登录FTPS服务代码(commons.net库)
Android远程连接和登录FTPS服务代码(commons.net库)
17 1
|
23天前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
73 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
1月前
|
Ubuntu Shell API
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
|
3月前
|
编解码 测试技术 Android开发
Android经典实战之用 CameraX 库实现高质量的照片和视频拍摄功能
本文详细介绍了如何利用CameraX库实现高质量的照片及视频拍摄功能,包括添加依赖、初始化、权限请求、配置预览与捕获等关键步骤。此外,还特别针对不同分辨率和帧率的视频拍摄提供了性能优化策略,确保应用既高效又稳定。
283 1
Android经典实战之用 CameraX 库实现高质量的照片和视频拍摄功能
|
3月前
|
监控 Java API
Android经典实战之OkDownload:一个经典强大的文件下载开源库,支持断点续传
本文介绍的 OkDownload 是一个专为 Android 设计的开源下载框架,支持多线程下载、断点续传和任务队列管理等功能,具备可靠性、灵活性和高性能特点。它提供了多种配置选项和监听器,便于开发者集成和扩展。尽管已多年未更新,但依然适用于大多数文件下载需求。
332 1
|
3月前
|
API Android开发
Android项目架构设计问题之选择和使用合适的UI库如何解决
Android项目架构设计问题之选择和使用合适的UI库如何解决
46 0
|
3月前
|
安全 Java 网络安全
Android远程连接和登录FTPS服务代码(commons.net库)
很多文章都介绍了FTPClient如何连接ftp服务器,但却很少有人说如何连接一台开了SSL认证的ftp服务器,现在代码来了。
99 2
|
4月前
|
存储 数据库 Android开发
🔥Android Jetpack全解析!拥抱Google官方库,让你的开发之旅更加顺畅无阻!🚀
【7月更文挑战第28天】在Android开发中追求高效稳定的路径?Android Jetpack作为Google官方库集合,是你的理想选择。它包含多个独立又协同工作的库,覆盖UI到安全性等多个领域,旨在减少样板代码,提高开发效率与应用质量。Jetpack核心组件如LiveData、ViewModel、Room等简化了数据绑定、状态保存及数据库操作。引入Jetpack只需在`build.gradle`中添加依赖。例如,使用Room进行数据库操作变得异常简单,从定义实体到实现CRUD操作,一切尽在掌握之中。拥抱Jetpack,提升开发效率,构建高质量应用!
68 4
|
3月前
|
测试技术 API Android开发
Android经典实战之简化 Android 相机开发:CameraX 库的全面解析
CameraX是Android Jetpack的一个组件,旨在简化相机应用开发,提供了易于使用的API并支持从Android 5.0(API级别21)起的设备。其主要特性包括广泛的设备兼容性、简洁的API、生命周期感知、简化实现及方便的集成与测试。通过简单的几个步骤即可实现如拍照、视频录制等功能。此外,还提供了最佳实践指导以确保应用的稳定性和性能。
60 0
|
3月前
|
Java Android开发 开发者
Android项目架构设计问题之使用Retrofit2作为网络库如何解决
Android项目架构设计问题之使用Retrofit2作为网络库如何解决
60 0
下一篇
无影云桌面