如何实现波纹进度条(ArkUI) 原创 精华
野生菌君
发布于 2023-11-29 17:16
浏览
3收藏
场景说明
应用开发过程中经常用到波纹进度条,常见的如充电进度、下载进度、上传进度等,本例即为大家介绍如何实现上述场景。
效果呈现
本示例最终效果如下:
运行环境
本例基于以下环境开发,开发者也可以基于其他适配的版本进行开发:
- IDE: DevEco Studio 3.1 Beta2
- SDK: Ohos_sdk_public 3.2.11.9(API Version 9 Release)
实现思路
本示例涉及4个主要特性及其实现方案如下:
- 进度条的圆形外框:使用Circle组件绘制外层圆环,实现外层框架。
- 圆框内进度数值变化:使用setInterval()让进度值持续递增控制进度数据变化(本案例未提供实时数据来源,所以直接通过数据递增来呈现效果)。
- 圆框水纹区域绘制:通过Path组件的绘制命令(M、Q、T)去绘制水纹形状并对中间进行填充。
- 底部进度条展示(主要用于跟波纹进度对比展示,方便大家理解):使用Slider组件绘制进度条。
开发步骤
针对上述所提到的内容,具体实现步骤如下:
-
先使用Cricle组件绘制外层的圆环
具体代码块如下: -
通过setInterval()方法让outSetValue值一直增加到100,使进度在规定时间内完成,最后通过clearInterval结束自增。
具体代码块如下: -
通过方程表达进度百分比和y的关系,通过Path组件的路径绘制命令(M、Q、T)去绘制路径生成封闭的自定义形状并对中间进行填充。
中间的填充有两个状态:
1.在进度100%时时填充颜色的圆形。
2.在进度不是100%时,使用Path组件绘制闭合曲线实现。
在使用Path组件绘制路径时的计算过程和相关函数的使用如下(坐标系以Path组件的左上角为坐标原点):
- 进度百分比和y的关系:y = (1-k)* 2r。
- 圆心点的坐标是(r, r),使用圆方程就可以计算出圆弧的起点和终点。
- 使用 A(rx ry x-axis-rotation large-arc-flag sweep-flag x y) 绘制圆弧,注意点就是在过圆心之后,需要反转下绘制角度。
- 使用 Q(x1 y1 x y) 和 T(x, y) 绘制对应的波浪,最后闭合路径然后填充颜色。
具体代码块如下:
-
绘制下方滑动条组件
具体代码块如下:
完整代码
具体代码如下:
参考
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
已于2023-11-29 17:29:35修改
赞
6
收藏 3
回复
6
3
3
相关推荐
大佬每次都能带来很酷炫的效果
不错不错,非常好!!