📜  Android Jetpack的UI组件

📅  最后修改于: 2021-05-10 15:39:22             🧑  作者: Mango

Android Jetpack是一组软件组件,库,工具和指南,可帮助开发强大的Android应用程序。由Google在2018年推出的Jetpack包含现有的android支持库,android体系结构组件以及一个单独的模块化实体,另外还添加了Android KTX库。如今,Google Play商店中近99%的应用程序都使用Android Jetpack库。 UI区域包括小部件,动画,调色板等,以改善用户体验。它还提供了可在应用程序中使用的最新表情符号字体。本文详细解释了UI组件的每个库。 Jetpack包含大量库,这些库以相互协作的方式构建,并构成了强大的移动应用程序。它的软件组件分为4类:

  1. 基础组件
  2. 建筑构件
  3. 行为成分
  4. UI组件

此外,以下是所有UI组件的列表:

  1. 动画与转场
  2. 汽车
  3. 表情符号
  4. 分段
  5. 布局
  6. 调色板
  7. 电视
  8. 穿

在应用程序中包含Android Jetpack库的方法

  • 在应用程序项目的build.gradle文件中添加google仓库。
  • 所有Jetpack组件都可在Google Maven存储库中获得,并将它们包括在build.gradle文件中

UI组件

1.动画与转场

Jetpack提供API,以设置可用于Android应用程序的各种动画。该框架赋予了移动小部件以及在具有动画和应用程序过渡的屏幕之间切换的能力。为了改善用户体验,动画用于对应用程序中发生的更改进行动画处理,并且过渡框架使您可以配置该更改的外观。开发人员可以管理从一个屏幕切换到另一个屏幕时,过渡修改应用程序外观的方式。 Jetpack Compose是用于构建本机Android UI的工具包。它通过将代码组织在更小且可重用的组件中,为开发应用程序提供了一种更加模块化的方法。这些组件易于维护,并且其中编写的代码以声明性方式(即基于可用状态)描述UI的外观。开发人员使用Jetpack Compose的这种声明性特性以精美而富于表现力的方式展示复杂的动画。

名为Transition的可组合项用于在Android中创建动画。它的灵活性使开发人员可以通过对组件的属性进行动画处理,轻松地将信息传递给用户。以下是Transition可组合物所涉及的元素,这些元素控制组件的整体动画:

  • TransitionDefinition:包括所有动画的定义以及过渡期间所需的动画的不同状态。
  • initState:描述过渡的初始阶段。如果未定义,则采用过渡中可用的第一个toState的值。
  • toState:描述过渡的下一个状态。  
  • 时钟:管理随时间变化的动画。它是一个可选参数。
  • onStateChangeFinished:可选的侦听器,用于通知状态更改动画的完成。
  • 儿童:可以动画制作。

Android Jetpack提供了一些预定义的动画构建器,开发人员可以在其应用程序中直接使用它们。 TransitionDefinition包含所有这些动画的代码。

  1. 补间:动画化对象的几何变化,例如移动,旋转,拉伸等。
  2. 物理通过提供阻尼比和刚度来定义对象的弹簧动画。
  3. 关键帧:创建动画,其中目标对象的值随时间变化。  
  4. 捕捉:对从一种状态切换到另一种状态的即时切换进行动画处理。  
  5. 可重复性:用于重复动画多次,开发人员希望如此。

2.自动

如今,人们对智能手机应用程序的依赖程度达到了即使在驾车时也需要它们的程度。使用手机的原因可能是紧急通话或只是欣赏音乐。 Google意识到了这种用例,并开发了Android Auto ,其愿景是最大程度地减少驾驶员与手机的互动,并确保道路上的安全性和安全性。任务是将最实用的应用程序带到用户的智能手机或兼容的汽车显示屏上。 Android Auto提供了广泛的应用程序列表,可在车辆显示屏上方便地使用。可以在Android Auto上构建,测试和分发以下类别的应用程序:

  1. 导航应用程序: Google Maps导航界面使用户可以设置目的地,选择各种路线以及查看实时路况。它在每个转弯处通过语音指导的驾驶方向为驾驶员提供帮助,并估计目的地的到达时间。即使用户切换到另一个屏幕,该应用程序仍在后台运行。此外,用户还可以在此应用程序中设置其他兴趣,例如停车场和加油站,餐馆等的位置。
  2. 即时通讯应用:在开车时,与他人通讯或打电话可能是最危险的事情。为解决此问题,Android Auto提供了消息接收应用程序,该应用程序接收消息/通知并使用“文本转语音”功能大声朗读它们。用户还可以通过汽车中的语音输入发送回复。要在Android Auto中激活免提语音命令,可以按方向盘上的“通话”按钮,也可以通过说“ Ok Google”来触发设备。
  3. 媒体应用程序:此类应用程序允许用户浏览和播放汽车中的任何类型的音频内容。它接受语音命令来播放广播,音乐或有声读物。    

Jetpack库提供了两个用于开发汽车android应用程序的选项,即Android AutoAndroid Automotive OS 。 Android Auto应用程序与Android手机一起可以提供针对驾驶员进行优化的应用程序体验。另一方面,Android Automotive OS是嵌入到车辆中的基于Android的信息娱乐系统。有了这个,汽车就变成了可以自我支持的Android设备,可以直接在汽车的屏幕上运行应用程序。开发人员在构建应用程序以涵盖两个用例的同时,更喜欢一种应用程序架构。

3.表情符号

如果使用某个应用程序在人与人之间进行通信,则表情符号肯定会成为该应用程序的一部分。 Unicode标准非常频繁地添加新的表情符号,因此,无论Android设备版本如何,用户都应该能够看到最新的表情符号,这一点很重要。 Google已发布了一个名为EmojiCompat的全新库,以处理表情符号字符并使用可下载的字体支持。该库可确保无论设备操作系统版本如何,应用程序都可以使用最新的表情符号进行更新。 EmojiCompat使用其CharSequence识别表情符号,并将其替换为EmojiSpans (如果需要),以确保发送方和接收方将以完全相同的方式观察表情符号。用户需要定期更新此库依赖项,以获取最新的表情符号。如果应用程序未使用EmojiCompat库,则用户将看到一个带有十字符号(☒)代替表情符号的空白框。该库的向后兼容性最高为Android 4.4(API级别19) 。对于低于此版本的Android OS版本,表情符号将与常规TextView完全相同地显示。

将EmojiCompat支持库添加到项目中:

  • 在应用程序级别的build.gradle文件中添加以下提到的实现。  
  • 要在AppCompat中使用Emoji窗口小部件,请将AppCompat支持库添加到“依赖项”部分

表情符号视图/小部件:

Widget

Class

EmojiTextView android.support.text.emoji.widget.EmojiTextView
EmojiEditText android.support.text.emoji.widget.EmojiEditText
EmojiButton android.support.text.emoji.widget.EmojiButton
EmojiAppCompatTextView android.support.text.emoji.widget.EmojiAppCompatTextView
EmojiAppCompatEditText android.support.text.emoji.widget.EmojiAppCompatEditText
EmojiAppCompatButton android.support.text.emoji.widget.EmojiAppCompatButton

4.片段

Android的片段支持类已转移到Jetpack的这一部分。片段允许将UI分成离散的片段,从而将模块化和可重用性引入到活动的UI中。用户界面的一部分由片段定义,然后嵌入到活动中。没有活动就不存在碎片。随着Android Jetpack的发布,Google在使用这些片段方面提供了一些重大改进和高级功能。 Jetpack的NavigationBottomNavigationViewViewPager2库旨在以更有效的方式处理片段。此外,还保证了片段类与jetpack体系结构组件的生命周期类的正确集成。以下是Google为Android开发人员新增的功能和改进的列表:

一种。片段之间的共享和交流:

为了维护独立的片段,开发人员以不允许片段直接与其他片段或其主机活动进行通信的方式编写代码。 Jetpack片段库提供了两个用于建立通信的选项,即片段结果API和共享的ViewModel 。 Fragment Rest API适用于一次性结果,其数据可以打包在一起。此外,如果需要与任何自定义API共享持久数据,则首选ViewModel。它还能够存储和管理UI数据。开发人员可以根据应用程序的需求在两种方法之间进行选择。

b。构造函数可以保存Layout资源ID:

AndroidX AppCompat 1.1.0Fragment 1.1.0使构造函数可以将布局ID作为参数。这样,可以在片段中观察到方法覆盖的数量大大减少。现在,可以手动调用充气器来充气片段的视图,而不必覆盖onCreateView()方法。这使类更具可读性。

C。 FragmentManager和导航库:

片段的所有关键任务(例如添加,删除,替换以及将其发送回堆栈)都由FragmentManager类执行。为了处理所有这些与导航相关的任务,Jetpack建议使用导航库。该库的框架为开发人员提供了一些最佳实践,以便他们可以有效地使用片段,片段管理器和后台堆栈。每个在其UI中包含片段的android应用程序都必须在某种程度上使用FragmentManager。但是,在使用Jetpack导航库时,开发人员可能不会直接与FragmentManager进行交互。

d。 FragmentFactory:

Android开发人员一直向Fragments提出这个问题,那就是不能将带参数的构造函数一起使用。例如,开发人员无法在使用Dagger2进行依赖项注入时使用Inject注释片段构造函数并指定参数。与Jetpack一起引入的AndroidX库提供了FragmentFactory类,该类能够处理此问题以及与片段创建相关的类似问题。该API的结构简单,通用,可帮助开发人员以自己的自定义方式创建片段实例。为了覆盖实例化Fragment的默认方法,必须在应用程序的FragmentManager中注册FragmentFactory。

e。测试片段:

Google推出了AndroidX测试,使测试成为Jetpack的必要组成部分。现有的库以及一些新的API和对AndroidX Test的完整Kotlin支持提供了一种编写合适且简洁的测试的方法。 AndroidX库的FragmentScenario类构造用于对片段执行测试的环境。它由两种在测试中启动片段的主要方法组成,第一种是launchInContainer() ,用于测试片段的用户界面。另一个方法是launch() ,它用于在没有片段用户界面的情况下进行测试。在某些情况下,片段具有某些依赖性。要生成这些依赖项的测试版本,必须为launchInContainer()或launch()方法提供一个自定义FragmentFactory。开发人员可以选择其中一种方法,并且可以使用Espresso UI测试来检查有关片段的UI元素的信息。为了使用FragmentScenario类,需要在应用程序级别的build.gradle文件中定义片段测试工件。

F。 FragmentContainerView:

AndroidX Fragment 1.2.0带来了FragmentContainerView ,它扩展了FrameLayout并为android应用中的片段提供了自定义的布局设计。它用作片段的父代,以便它可以与片段行为协调并在诸如“片段事务”之类的任务中引入灵活性。它还支持属性,并解决了窗口插入调度的问题。而且,此容器解决了一些与片段的z排序有关的动画问题,例如退出片段不再出现在视图顶部。

5.布局

用户界面结构(如应用程序的活动)由Layout定义。它定义了ViewViewGroup对象。可以通过两种方式创建View和ViewGroup:通过以XML声明UI元素或通过编写代码(即以编程方式)。 Jetpack的这一部分涵盖了一些最常见的布局,例如LinearLayout,RelativeLayout和全新的ConstraintLayout。而且,官方的Jetpack布局文档提供了一些指导,以使用RecyclerView创建项目列表以及使用CardView创建卡布局。用户可以看到一个视图。 EditView,TextView和Button是View的示例。另一方面,ViewGroup是一个容器对象,它定义了View的布局结构,因此它是不可见的。 ViewGroup的示例是LinearLayout,RelativeLayout和ConstraintLayout。

6.调色板

提供正确的颜色组合在提升用户体验方面起着重要作用。因此,这是应用程序开发过程中的重要方面。开发人员通常会构建应用程序,其中UI元素会根据时间(白天和黑夜)更改其颜色。这种类型的练习可为用户带来良好的感觉,并确保在使用应用程序时获得身临其境的体验。为了执行这些任务,Android Jetpack提供了一个新的Palette支持库。它能够从图像中提取少量颜色。提取的颜色样式为应用程序的UI控件,并根据背景图像的颜色更新图标。 android应用程序的Material Design是动态使用颜色流行的原因。提取的颜色或调色板包含图像的鲜艳和柔和的色调。它还包括前景色以确保最大的可读性。

要将Palette API包含在项目中,请按以下方式更新应用程序级别的build.gradle文件:

调色板使开发人员可以选择要从特定图像源生成的颜色数量。结果调色板中numberOfColors的默认值设置为16。但是,计数最多可以增加24-32。生成完整调色板所需的时间与颜色计数成正比。生成调色板后,将使用色板(一种方法)访问这些颜色。每个颜色配置文件都有一个关联的色板,该色板返回该调色板中的颜色。以下是调色板API生成的颜色配置文件:

Profile

Swatch

Light Vibrant Palette.getLightVibrantSwatch()
Vibrant Palette.getVibrantSwatch()
Dark Vibrant Palette.getDarkVibrantSwatch()
Light Muted Palette.getLightMutedSwatch()
Muted Palette.getMutedSwatch()
Dark Muted Palette.getDarkMutedSwatch()

7.电视

Jetpack提供了几个关键组件来帮助开发人员构建适用于Android Smart TV的应用程序。 Android TV应用程序的结构与移动/平板电脑应用程序相同,但是有一些明显的区别。电视的硬件和控制器与移动设备有很大不同。此外,导航系统将通过电视拆卸器上的d-pad (上,下,左,右箭头按钮)进行操作。为了解决这些问题,Jetpack提供了Leanback库。该库还解决了搜索问题以及向Android TV上的用户推荐内容的问题。

leanback库的依赖项可以添加到应用程序build.gradle文件中:

8.穿戴OS

可穿戴设备的Android版本称为Wear OS 。 Android Jetpack包含Wear UI库,使开发人员可以创建可播放和控制手表中媒体的应用。也可以使用库的UI组件创建独立的手表应用程序或表盘。 Jetpack确保用户界面在所有应用程序中都保持优化和兼容。 Wear OS还支持移动设备功能,例如通知和“对Google的操作”。开发人员可以在Wear OS下开发三种系统:

  1. 穿戴式应用程序:将在智能手表或齿轮上运行的应用程序。它支持传感器和GPU等设备功能。
  2. 表盘: 专为自定义图纸,颜色,动画和上下文信息而设计。
  3. 并发症数据提供者:提供自定义数据(例如文本,图像等)以观看面孔。  

可以通过在Wear模块的build.gradle文件中添加以下依赖项来使用Wear UI库

想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处前往由我们的专家精心策划的指南,以使您立即做好行业准备!