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