QML动画概述(几十篇相关博客)
QML提供了丰富的动画元素,说起动画,无非是给UI增光添彩罢了。在QML中,动画常常与State和Transition联系在一起,这几个概念(下面的例子中都用到了)都比较简单,相关介绍可查看Qt官方文档,网址如下:
http://doc.qt.io/qt-5/qtquick-statesanimations-topic.html
下面先列举几个QML动画元素,动画效果可“忘文生意”:
PropertyAnimation(常用)
AnchorAnimation
ColorAnimation
NumberAnimation
ParentAnimation
PathAnimation
RotationAnimation
Vector3dAnimation
SequentialAnimation
ParalleAnimation
PauseAnimation
SmoothedAnimation
SpringAnimation
PropertyAction(无动画效果)
ScriptAction
Behavior(设置默认动画)
常见的QML动画有三种表示方式,下面一一说明。
1、使用State和Transition
State改变属性值,Transition实现动画,例子如下:
- import QtQuick 2.2
- Item {
- id: container
- width: 360
- height: 360
- Rectangle {
- id: rect
- width: 100
- height: 100
- color: "blue"
- MouseArea {
- anchors.fill: parent
- // state属性值为空字符串时('')即默认状态
- onClicked: container.state == 'right' ? container.state = '' : container.state = 'right'
- }
- }
- states: State {
- name: "right"
- // rect水平移动
- PropertyChanges {
- target: rect
- x: 260
- }
- }
- transitions: Transition {
- // 数字(x坐标)动画,设置了easing的回弹效果和动画时间
- NumberAnimation {
- property: "x"
- easing.type: Easing.InOutBounce
- duration: 500
- }
- }
- }
2、使用Behavior
直接修改上面的例子,实现同样的动画效果,结果如下:
- import QtQuick 2.2
- Item {
- id: container
- width: 360
- height: 360
- Rectangle {
- id: rect
- width: 100
- height: 100
- color: "blue"
- // 看这里
- Behavior on x {
- NumberAnimation {
- easing.type: Easing.InOutBounce
- duration: 500
- }
- }
- MouseArea {
- anchors.fill: parent
- // 改变rect的x坐标
- onClicked: rect.x = (rect.x == 0 ? 260 : 0)
- }
- }
- }
3、其它
还是在上面例子的基础上修改以实现同样的效果,代码如下:
- import QtQuick 2.2
- Item {
- id: container
- width: 360
- height: 360
- Rectangle {
- id: rect
- width: 100
- height: 100
- color: "blue"
- // rect水平右移
- NumberAnimation on x {
- id: right
- running: false // false
- to: 260
- easing.type: Easing.InOutBounce
- duration: 500
- }
- // rect水平左移
- NumberAnimation on x {
- id: left
- running: false // false
- to: 0
- easing.type: Easing.OutInBounce // 换个easing动画效果
- duration: 500
- }
- MouseArea {
- anchors.fill: parent
- // 判断移动方向
- onClicked: rect.x == 0 ? right.running = true : left.running = true
- }
- }
- }
下面再来看一个有意思的例子,parallel和sequential动画:
- import QtQuick 2.2
- Item {
- id: container
- width: 360
- height: 360
- Rectangle {
- id: up
- width: 100
- height: 100
- color: "blue"
- // 并行动画,水平移动和颜色变化同时进行
- ParallelAnimation {
- id: parallel
- running: false
- PropertyAnimation {
- target: up
- property: "x"
- to: 260
- duration: 500
- }
- PropertyAnimation {
- target: up
- property: "color"
- to: "red"
- duration: 500
- }
- }
- MouseArea {
- anchors.fill: parent
- onClicked: parallel.running = true
- }
- }
- Rectangle {
- id: down
- width: 100
- height: 100
- color: "red"
- anchors.top: up.bottom
- // 串行动画,先进行水平移动,后进行颜色变化
- SequentialAnimation {
- id: sequential
- running: false
- PropertyAnimation {
- target: down
- property: "x"
- to: 260
- duration: 500
- }
- PropertyAnimation {
- target: down
- property: "color"
- to: "blue"
- duration: 500
- }
- }
- MouseArea {
- anchors.fill: parent
- onClicked: sequential.running = true
- }
- }
- }
关于QML动画,Qt官网文档也做了详细的介绍:
http://doc.qt.io/qt-5/qtquick-usecase-animations.html
http://doc.qt.io/qt-5/qtquick-statesanimations-animations.html
http://blog.csdn.net/ieearth/article/details/43986559
QML动画概述(几十篇相关博客)的更多相关文章
- 我的第一篇Markdown博客
我的第一篇Markdown博客 这是我第一次用Markdown写博客,发现还是比较好用的,加上Marsedit也支持了Markdown的博客预览,博客园也加了Markdown的格式支持,就更加方便了, ...
- HTML5 Canvas动画效果演示 - 流浪的鱼 - 博客频道 - CSDN.NET
HTML5 Canvas动画效果演示 - 流浪的鱼 - 博客频道 - CSDN.NET HTML5 Canvas动画效果演示
- Android相关 博客收藏
#1 Android 网络编程 参考博客 :http://blog.csdn.net/kieven2008/article/details/8210737 #2 Could not find com. ...
- Ceph相关博客、网站(256篇OpenStack博客)
官网文档: http://docs.ceph.com/docs/master/cephfs/ http://docs.ceph.com/docs/master/cephfs/createfs/ ( ...
- Socket网络编程--FTP客户端(60篇socket博客,而且都比较简单、深入浅出)
已经好久没有写过博客进行分享了.具体原因,在以后说. 这几天在了解FTP协议,准备任务是写一个FTP客户端程序.直接上干货了. 0.了解FTP作用 就是一个提供一个文件的共享协议. 1.了解FTP协议 ...
- 基于Laravel开发博客应用系列 —— 十分钟搭建博客系统
1.创建文章数据表及其模型(0:00~2:30) 我们已经在上一节中为博客项目完成了大部分准备工作,现在首先要做的就是为这个项目创建一个新的文章表 posts及该表对应的模型类 Post,使用如下Ar ...
- 第十六周博客作业 <西北师范大学| 周安伟>
第十六周作业 助教博客链接https://home.cnblogs.com/u/zaw-315/ 作业要求链接https://www.cnblogs.com/nwnu-daizh/p/10980707 ...
- 第十五周博客作业 <西北师范大学| 周安伟>
第十五周作业 助教博客链接https://home.cnblogs.com/u/zaw-315/ 作业要求链接https://www.cnblogs.com/nwnu-daizh/p/10946673 ...
- 第十二周博客作业 <西北师范大学| 周安伟>
第十二周作业 助教博客链接https://home.cnblogs.com/u/zaw-315/ 作业要求链接https://www.cnblogs.com/nwnu-daizh/p/10831971 ...
随机推荐
- Parallel.For
Parallel.For 你可能忽视的一个非常实用的重载方法 说起Parallel.For大家都不会陌生,很简单,不就是一个提供并行功能的for循环吗? 或许大家平时使用到的差不多就是其中最简单 ...
- RGB值得计算公式
三原色分别为:红(Red).绿(Green).蓝(Blue). 颜色值=(Red)+(Green*256)+(Blue*256*256) //由三原色值合成颜色整数值 function ColorFr ...
- 定制Octopress
在 github pages 上搭建好 octopress 博客之后,博客的基本功能就能使用了.如果想自己定制也是没问题的,octopress 有较详尽的官方文档,原则上有问题求助官方即可:octop ...
- jQuery中的Deferred和promise
promise:http://www.alloyteam.com/2014/05/javascript-promise-mode/ 1 jQuery 中的 Deferred 和 Promises : ...
- 《冰球撞击》Android休闲桌球类游戏现已面试,快来下载吧!
<冰球撞击>Android休闲桌球类游戏现已完工上市快来下载吧! http://pan.baidu.com/s/1dD9vIRv <冰球撞击>是一个类似玩投篮机操作方式的And ...
- angular.js分页代码的实例
对于大多数web应用来说显示项目列表是一种很常见的任务.通常情况下,我们的数据会比较多,无法很好地显示在单个页面中.在这种情况下,我们需要把数据以页的方式来展示,同时带有转到上一页和下一页的功能.现在 ...
- CefSharp中ChromiumWebBrowser打开新页面处理(_blank)
原文:CefSharp中ChromiumWebBrowser打开新页面处理(_blank) 版权声明:欢迎转载,但是请保留出处说明 https://blog.csdn.net/lanwilliam/a ...
- CreateThread传递多个参数的方法(利用结构体的参数指针)
很多朋友一直都在问CreateThread如何传递多个参数,CreateThread传递参数的方式是指针传递的,所以这里也可以利用指针来做!Demo 关键代码如下: type TfrmTestThr ...
- C#获取带汉字的字符串长度
正常情况下,我们是直接去string的length的,但是汉字是有两个字节的,所以直接用length是错的.如下图: 所以应该用以下代码来获取长度: private void button1_Clic ...
- 【C++】小心使用文件读写模式:回车('\r') 换行('\n')问题的一次纠结经历
原来没有仔细注意C++读写文件的二进制模式和文本模式,这次吃了大亏.(平台:windows VS2012) BUG出现: 写了一个程序A,生成一个文本文件F保存在本地,然后用程序B读取此文件计算MD ...