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