QML 实现图片帧渐隐渐显轮播
来源:互联网 发布:nginx if 编辑:程序博客网 时间:2024/05/19 19:14
前言
所谓图片帧渐隐渐显轮播就是,一组图片列表,当前图片逐渐改变透明度隐藏,同时下一张图片逐渐改变透明度显示,依次循环,达到渐隐渐显的效果,该效果常用于图片展示,相比左右自动切换的轮播方式来说,这种方式在视觉效果上不会显得太突兀。当然,这里的图片还可以换成其他组件,比如一个复杂的页面。
正文
实现方式并不复杂,有一种最常规的方式就是自己去实现每张图片的动画效果,然后控制切换,这种方式比较麻烦一些。其实 QML 有自带的组件可以实现这种效果,那就是StackView,可以通过设置delegate来自定义切换的动画效果,另外,为了保证图片是轮询切换,需要用到定时器,来不断的向StackView中push图片,但是又不能让StackView中的数据越来越多,要不然会很消耗内存。所以这里根据调整 push 的参数来实现StackView中永远都只保持一张图片。
先来看看效果图:
(由于博客上传的图片只限制2M 大小,所以录制的gif 帧率不高,真实效果比这个更好)
直接上源码:
Window { visible: true width: 420 height: 320 property int flag: 1 property var imgList: [img1,img2,img3] StackView{ id:stack anchors.fill: parent initialItem: img1 delegate: StackViewDelegate{ function transitionFinished(properties) { properties.exitItem.opacity = 1 } pushTransition: StackViewTransition { PropertyAnimation { target: enterItem property: "opacity" from: 0 to: 1 duration: 1500 } PropertyAnimation { target: exitItem property: "opacity" from: 1 to: 0 duration: 500 } } } } Image { id: img1 source: "1.jpg" visible: false } Image { id: img2 source: "2.jpg" visible: false } Image { id: img3 source: "3.jpg" visible: false } Timer{ interval: 2000 repeat: true running: true onTriggered: { stack.push({item:imgList[flag%3],immediate:false,replace:true}) flag++ } }}
这里设置图片隐藏的时间为500ms,图片显示的时间为1500ms,通过定时器来不断的向 StackView中 push 数据,注意这里的 push 参数
stack.push({item:imgList[flag%3],immediate:false,replace:true})
item 是通过数组方式不断改变对象
immediate 这个必须为 false,否则不会有动画过程
replace 设置为 true,就会将新的图片覆盖原有的图片,这样可以保证StackView 中数据不会一直增加。
这里只是一个简单的示例,可以通过该方法来拓展更多好玩的东西。
源码在这里,点击下载
阅读全文
1 0
- QML 实现图片帧渐隐渐显轮播
- 渐隐渐显轮播/fadeIn()/fadeOut()/左右点击轮播
- 图片循环渐显渐隐
- js实现图片渐隐渐显的切换效果
- 两个渐隐渐现图片轮播
- 鼠标触发图片渐隐渐显效果HTC
- JQuery:渐隐渐显图片轮换幻灯片
- javascript实现图片循环渐显播放的代码(图片轮播)
- 用VC实现图象渐显和渐隐
- 使用CanvasGroup实现渐隐渐显效果
- jQuery实现带缩略图的渐显渐隐图片幻灯切换效果
- Unity3d UI渐隐渐显
- 用Visual C++实现图象渐显和渐隐
- 如何实现先渐显再渐隐的动画?
- QT 中实现图片渐显
- C#中窗体渐显渐隐
- 文字图片渐隐效果实现
- 实现图片轮播
- 34muduo_net库源码分析(十)
- 三级缓存
- leetcode-11-Container With Most Water
- SpringView实现上拉加载,下拉刷新
- ICPC2017网络赛(沈阳)1008 transaction transaction transaction——树形DP
- QML 实现图片帧渐隐渐显轮播
- Java程序设计基础教程-第二章
- TX2017秋招笔试题之geohash编码
- C++封装、继承、多态
- Genymotion的安装配置与使用(一)
- vb.net 教程 20-3 控制Ie浏览器 6
- DrQA实践
- 1077: 字符串加密
- quartz学习笔记5:update