当前位置: 首页 > article >正文

Qml 实现水波进度动画条

【写在前面】

        最近看到一个非常有趣的动画效果:水波进度动画

        学习了一下实现思路,觉得很有意思。

        不过原版是 HTML + CSS,我这里用的是 Qml,有一些小技巧,分享给大家~


【正文开始】

        老样子,先来看看效果图:

        最基础的无非就是四个部分:

        1、圆形水缸

        2、水波

        3、百分比数字

        4、进度条

        水波效果最重点的就是水波,其实这个水波就是个障眼法罢了,画张图你们就明白了。

        它就是一个圆角正方形,一直在旋转和上升下降,让用户有一种水波的视觉感~

         当然,我们还需要将多余的部分裁剪掉,因此这里需要借助 OpacityMask

        OpacityMask 原理是将 Source 对应 MaskSource 中的透明部分掩盖掉。

        但我们不能直接透出 Source 部分 ( 蓝色圆角矩形 ),需要将它先下移,然后裁剪得到:

         接着,使用一个圆形作为 MaskSource 即可裁剪出下面的形状:

        最后,让蓝色圆角矩形无限旋转即可:

    Item {
        id: wave
        clip: true
        anchors.fill: parent
        visible: false

        Rectangle {
            y: mask.height * 1.1 * (1 - root.value)
            width: root.radius * 4
            height: root.radius * 4
            anchors.horizontalCenter: parent.horizontalCenter
            radius: root.radius * 1.5
            color: root.waveColor
            rotation: 45

            NumberAnimation on rotation {
                from: 0
                to: 360
                running: root.value < 1.0
                duration: root.waveSpeed * 1000
                loops: NumberAnimation.Infinite
            }
        }
    }

         至于进度条和文字就非常简单,直接看源码即可。


【结语】

        最后:项目链接(多多star呀..⭐_⭐):

        Github 地址:

https://github.com/mengps/QmlControls/tree/master/WaveProgressicon-default.png?t=O83Ahttps://github.com/mengps/QmlControls/tree/master/WaveProgress        CSDN 的:

https://download.csdn.net/download/u011283226/89731283icon-default.png?t=O83Ahttps://download.csdn.net/download/u011283226/89731283


http://www.kler.cn/a/299374.html

相关文章:

  • 分布式光伏的劣势
  • Spark-ShuffleWriter
  • Groovy -> Groovy类和对象
  • 828华为云征文 | 使用华为云X实例部署图数据库Virtuoso并存储6500万条大数据的完整过程与性能测评
  • 加密与安全 _ 安全原则:任何客户端的东西都不可信任
  • Spark2.x 入门:决策树分类器
  • 【笔记】408刷题笔记
  • K8S - 外部访问集群
  • 26. Redis缓存过期
  • LabVIEW程序员每天会阅读哪些技术网站来提升自己
  • 【数据结构】单链表的应用
  • 跨国公司研发战略调整与中国IT产业的未来
  • 安卓开发板_联发科MTK开发评估套件串口调试
  • 【OpenCV2.2】图像的算术与位运算(图像的加法运算、图像的减法运算、图像的融合)、OpenCV的位运算(非操作、与运算、或和异或)
  • 数学建模笔记——TOPSIS[优劣解距离]法
  • 大数据Flink(一百一十六):Flink SQL的时间属性
  • 一款好用的电子样本册转换器
  • Unity面试:MipMap是什么,有什么作用?
  • 【CMake编译报错小复盘】CMAKE_CUDA_ARCHITECTURES,CMake version,GCC version问题
  • vscode 高效率开发手册