Qt Quick重要概念 - 状态、过渡和动画#
Qt Quick中状态、过渡和动画概念描述
在任何现代用户界面中,在状态之间切换和动画化用户界面都非常有益。这些是Qt Quick中的第一类概念。
本页描述了状态的原理、状态过渡和属性动画。它详细说明了哪些概念是重要的以及原因,以及这些概念之间的关系。它还提供了链接到Qt Quick提供用于实现这些概念的QML类型的深入细节。
状态#
特定视觉项目的状态是描述单个视觉组件如何在其中显示以及所有与该状态相关数据的集合。用户界面中的大多数视觉项将具有有限数量的状态,每个状态都有明确定义的属性。
例如,清单中的元素可以是已选的或未选的,如果已选,它可以是当前活动的单个选择或它是选择组的一部分。
这些状态中的每一个都可以具有某些相关的视觉外观(中性、突出显示、展开等)。
Qt Quick提供了一个有属性的State
类型,用于定义它的语义并可用于触发行为或动画。有关更多信息,请参阅有关Qt Quick States的文档。
过渡#
当视觉项从一个状态转换到另一个状态时,该项目的外观将改变。过渡是两个状态之间的“边缘”。它可能触发其他事件的发生,因为应用程序的其他部分可能在进入或离开某个状态时具有行为。
Qt Quick提供了一个定义转换发生时发生的操作的Transition
类型。请参阅有关Transitions during State Changes的文档以获取有关过渡的更多信息。
动画#
在状态之间切换时,可以使用流体动画来帮助用户在转换期间。突然和不可预期的视觉画布变化会导致用户体验不佳,应该避免。
如果列表中的元素变为所选,颜色变化(从中性到突出显示)可以动画化。如果列表中元素的当前位置发生变化,它可以以流畅的动画方式移动,以使用户的眼睛可以跟踪变化。
Qt Quick通过各种动画和转换类型支持这些类型的动画。有关这些类型和使用它们的信息,请参阅有关Animations and Transitions In Qt Quick的文档。
动画化属性分配#
动画不仅与状态间的转换相关。例如,动画可能会由与特定状态无直接关联的其他事件触发。
始终对某些视觉项目的属性变化进行动画处理通常是有益的,不管变化的原因是什么(例如,透明度效果)。Qt Quick提供了Behavior类型,允许客户端指定属性变化的动画行为。该Behavior类型是一个QML对象属性修饰符的示例。
有关使用Behavior类型提供默认属性变化动画的更多信息,请参阅关于默认属性动画的文档。
请注意,结合使用默认属性动画(通过Behavior类型)和状态转换动画有时可能会导致未定义的行为。有关这方面的更多信息,请参阅关于使用Qt Quick行为与状态的文档。
动画师#
Animator类型是特殊的动画类型,它绕过QML对象并直接在场景图中的原语上操作。这带来的好处是,基于Animator的动画可以(在适用的情况下)在场景图的渲染线程上运行,并且可以在UI被其他事情阻塞时继续动画。
Qt Quick提供了以下Animator类型
ScaleAnimator - 动画Item的缩放因子。
RotationAnimator - 动画Item的旋转。
OpacityAnimator - 动画Item的透明度。
UniformAnimator - 动画ShaderEffect中的统一变量。
动画精灵#
动画精灵的概念与本页其他部分使用的动画概念是分开的。如果您想创建或使用动画图像或精灵,请参阅关于精灵动画的文档。