首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

canvas实现有递增动画的环形进度条

圆环动画效果 由于我这里需求特殊,需要用户每次翻到canvas所在swiper时,才会触发动画(后来更麻烦一点需要柱状图和canvas部分有个入场效果后,动画才开始。...效果就是上图中最长的那张gif动画那样)。 所以我得借助swiper才能实现。在swiper切换的回调函数中,从0开始不停递增grade分数,并重新触发彩色圆环的绘制,进而实现动画效果。...swiper在vue-data中的配置里,有一个on对象。在on对象中的slideChange函数,就是每次翻页swiper时会触发的回调函数。 ?...否则就走到else里初始化数据页面的状态、清除定时器暂停动画、并把彩色圆环清空 (3)vm.aniShow 在我上篇《纯css绘制柱状图》里边说了,柱状图的动画要跟canvas的动画一起说。...(5)所有这些放到setTimeout中,暂停500毫秒再执行,是为了等柱图和环图入场后,在开始绘制圆环的递增效果。 其实上边代码都是很简单的逻辑处理,看官们读一遍代码应该就差不离了。

2.5K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    高仿一个echarts饼图

    用canvas实现一个饼图很简单,所以本文在介绍使用vue高仿一个ECharts饼图的实现过程中会顺便回顾一下canvas的一些知识点,先来看一下本次的成果: 布局及初始化工作 布局很简单,一个div...动画 我们在使用ECharts饼图的时候会发现它渲染的时候是会有一小段动画的: 用canvas实现动画的基本原理就是不断改变绘图数据,然后不断刷新画布,听起来像是废话,所以一种实现方式是动态修改当前绘制结束的圆弧的弧度...在同一个扇形里面移动onCanvasMousemove会持续触发并检测到当前所在索引调用move方法,可能是一个动画还没结束,而且在同一个扇形里移动只要动画一次就够了,所以需要做个判断: onCanvasMousemove...环图其实就是饼图中间挖了个洞,同样可以使用clip方法来实现,具体就是创建一个圆环路径: 所谓圆环也就是一大一小两个圆,但是这样会存在两个区域,一个是小圆内部区域,一个是小圆和大圆之间的区域,那么clip...(); // 移到内圆环不触发,创建一个内圆大小的路径,调用isPointInPath方法进行检测 if (this.checkHoverInInnerCircle(x, y))

    1K60

    Shader编程之地标特效

    上面图标运动到最低位置时,下面最小的圆环刚刚生成,还是一个圆点,这样看上去好像是上面图标触发了下面圆环的生成,更加带感、拟物。 上面图标永远对准相机,下面同心圆不动。...上面图标(为了对准相机而运动)的支点(pivot point,或者叫中心点、枢点)在sprite的正下方。 下面同心圆从两侧均可看见(禁用三角朝向剔除)。...然后图标的化我们准备一张透明png就可以了,四周trim以下,这张图主要记录了哪些像素是透明的。...注意之所以选用cosine而不是sine是为了同步上下2个动画时间,使得上面图标触底的时候,小圆环正好出生,从而实现拟物的视觉效果。...同心圆算法在上一次的雷达图生成算法中也有提及,所以直接贴代码。 注意,Opacity Mask Clip Value决定了圆环的宽度,所以要设定为一个合适的值。 ‍

    1.3K40

    一个精致的打钩小动画

    国际惯例,先上轻芒杂志标记已读的动画 ? 看了后是不是感觉很精致,很带感? 那下面来看一下我自己模仿的效果 ? 静态图 ?...未选中的状态很简单,需要绘制的有两个图形 圆环 勾 选中的状态 绘制选中的动画稍微复杂一点,主要包括 绘制圆环进度条 这个简单,直接使用drawArc()即可实现 绘制向圆心收缩的动画 这个一开始的时候想用...这一步后效果图如下 ? 绘制向圆心收缩的动画 圆心收缩的动画在圆环进度达到100%的时候才进行,同理,也采用计数器circleCounter的方法来控制绘制的时间和速度 ? 这一步后效果图如下 ?...绘制打钩,这里问题不大,因为在onMeasure()中已经将钩的三个坐标点已经计算出来了,直接使用drawLine()即可画出来。 ? 这一步后效果图如下 ?...看看效果图 ? 自定义配置项 ? 这里简单说一下动画执行速度的配置,这里我设置了3档速度,我用枚举定义了三个速度的配置项 ? 获取xml的配置,获取对应的枚举,从而得到配好的动画速度的一些参数 ?

    1.5K50

    CSS3 - vue中纯css实现柱状图表效果

    背景 以前我们制作柱状图都用echarts或者其他同类型的图表插件 这次是个移动端的需求,而且这个图表需要动画 使用echarts就会显得过重,而且动画达不到我想要的效果(主要是我自己愚蠢想不到好的动画办法...先来看下效果图: 几个柱状图分数不满时: ? 几个满分柱图: ? 还有完整的元素组合动画效果: ? ps:圆环+进度的效果制作,见下篇。...从最后一张图中可以看出这个需求,柱状图是在一个swiper当中实现的。 swiper翻页,柱状图逐个增长,圆环进度增长。 废话不多说,看处理思路~ 分析一波设计稿,得到解题思路: ?  ...思路有了,我们先来实现一个柱状图: ? ?...其中: Data为1-4周的数据,进行循环得到四个柱状图div.row Points为实际得分。需要根据具体分值展示不同效果: aniShow是指是否触发动画,如果否就是什么都不展示,高度就为0。

    1.6K40

    三种 Loading 制作方案

    在之前的CSS中加上动画效果即可*/ animation: loading-360 0.8s infinite linear; /*给圆环添加旋转360度的动画,并且是无限次*/ } ?...而viewBox表示的是截取图形的区域,因为矢量图的绘制区域可以是无限大的,具体绘制在哪里根据具体的设置而定,比如上面的circle就绘制在圆心坐标为(25,25),半径为20的圆形区域中,而viewBox...设置为0 0 50 50,表示截图区域为左上角坐标为(0, 0),右下角坐标为(50,50)的矩形区域内,即会截取这个区域内的矢量图,然后将截取的矢量图放到svg的可显示区域内,同时会根据svg可显示区域的大小等比例进行缩放...如图所示,圆环的绘制起点是在水平方向最右边的那个点,然后进行顺时针绘制。...三、通过iconfont字体图标 我们可以直接通过iconfont字体图标代替圆环的绘制,直接以字体的形式显示出圆环,然后给其加上旋转动画即可,如: 我们可以在iconfont网站上下载喜欢的Loading

    3.3K10

    移动端圆环进度动画方案(透明背景-透明度圆环-css3版)

    然后要备注下重点: 我们的动画效果要应用在移动端,尤其是有些性能较差的安卓手机,所以一定要考虑性能问题。 先上效果图: ?...所以对于大于50%的圆环旋转动画,是需要两段动画拼接的,左半边的圆环先旋转180度到右半边,右半边的圆环再旋转相应的度数至左半边,这里旋转角度不是固定的,需要根据具体进度确定,所以这种方案右半边的圆环旋转多少度是通过...js赋值的,那么问题来了,当我们在pc上看到流畅的旋转动画时,在安卓手机上,两个半圆环动画的衔接处,有时差!...,在性能较差的安卓手机上会明显感觉到两个动画直接的衔接卡顿。...(最后一幅图太困了,改天再补!) ?

    1.5K30

    卡牌特效: svg不规则倒计时动效

    导语:直播过程中,往往会有各种动画特效增强直播效果,近期需求中,设计要求在企鹅电竞PC官网上实现一种卡牌效果,在不规则图片上叠加倒计时效果。...在日常的圆环动画中,也会有类似的倒计时效果,只不过圆环是规则的,实现起来比较简单。但是基于圆环效果,再加上svg的mask特性,就可以实现此类特殊效果。 ?...圆环效果 在一些页面中,经常可以看到一些圆环进度条,因为svg实现简单,所以这些基本上都是用svg的实现,svg circle是svg绘制圆形矢量图的属性,它支持设置以下属性: cx,cy:坐标位置 r...[ svg圆环图 ] 2. 虚线效果 实现这个效果的重点在circle的stroke-dasharray属性,stroke-dasharray在SVG中表示的是描边虚线。...repeatCount:动画执行次数 repeatDur:定义重复动画的总时间 当stroke-dasharray的可见长度等于圆环的周长,此时可见长度刚好覆盖了整个圆环,基于以上的实现,再加上动画,就可以实现圆环动画了

    2.2K30

    移动端圆环进度动画方案(透明背景-透明度圆环-css3版)

    然后要备注下重点: 我们的动画效果要应用在移动端,尤其是有些性能较差的安卓手机,所以一定要考虑性能问题。 先上效果图: ?...所以对于大于50%的圆环旋转动画,是需要两段动画拼接的,左半边的圆环先旋转180度到右半边,右半边的圆环再旋转相应的度数至左半边,这里旋转角度不是固定的,需要根据具体进度确定,所以这种方案右半边的圆环旋转多少度是通过...js赋值的,那么问题来了,当我们在pc上看到流畅的旋转动画时,在安卓手机上,两个半圆环动画的衔接处,有时差!...,在性能较差的安卓手机上会明显感觉到两个动画直接的衔接卡顿。...(最后一幅图太困了,改天再补!) ?

    1.5K80

    Android进阶之绘制-自定义View完全掌握(一)

    Android的UI设计可以说是决定一个app质量的关键因素,因为人们在使用app的时候,最先映入眼帘的就是app的界面了,一个美观、充实的界面能够给用户带来非常好的体验,会在用户心中留下好的印象。...我们可以把功能分为两层,我们先完成中间圆环菜单键控制最外层圆环旋转的动画。然后再完成最里层圆环home键控制中间圆环旋转的动画。 修改MainActivity的代码。...这样就实现了再点击手机的menu键时圆环旋转消失,但是这样就产生了一个bug,不知道观察了上面的动图大家发现bug没有,当我按menu键隐藏圆环时,我再去点击圆环的位置,圆环还是旋转出来了,按道理我们的圆环消失后...那很多人就有点子了,可以在Tools类的hideView()方法中添加view.setEnabled(false);,然后在showView()方法中添加view.setEnabled(true);,有些人以为这样就能够解决...可以想象,使用属性动画来旋转的话,当动画执行完毕时,布局旋转180度,此时控件都会旋转到屏幕的下方,这样,用户就点击不到控件从而也就不能触发点击事件了。 修改工具类代码。

    61040

    使用Canvas 实现一款图表插件(附带源码)

    此次图表功能包含折线图、柱状图、扇形图、圆环图、雷达图、圆环进度比图。 ? ? 最终效果: ❝https://winesu.github.io/charts/dist/index.html?.../css/main.css"; //动画 import Animation from './drawAnimation'; //圆环进度 import Cirque from '....这个动画函数接受传入的参数,并返回实时的进度值,在总入口我们引入了这个文件,并且调用的时候将 this 传入,就可以使用插件的 this 下的一参数。...这绘制时发现这样在各个点之间瞬间完成的效果是很刚硬的,也就是点与点之间的距离是没有动画效果的,需要再加上缓冲。speed 此时是不能帮忙的,需要再计算一个缓冲数据。...在绘制覆盖区域时依然根据圆心角来做绘制,雷达图无论是边线还是覆盖区域都是同一个圆心点。完整代码请移步: ❝https://github.com/wineSu/charts ❞ 前端学习笔记?

    1.3K10

    用初中数学知识撸一个canvas环形进度条

    效果图 先放个效果图,然后再说下具体实现过程,各位看官且听我慢慢道来。 ?...从设计稿我们可以直观地看到,整个环形进度条的最外围是由进度圆点确定的,而进度圆点的圆心在圆环圆周上。 ?...我们先画圆环,这时我们还要定义两个属性,分别是圆环线宽circleWidth和圆环颜色circleColor。...画圆环 画文字 调用fillText绘制文字,利用clientWidth/2和clientWidth/2取得中点坐标,结合控制文字对齐的两个属性textAlign和textBaseline,我们可以将文字绘制在画布中央...其他效果 当然根据组件支持的属性,我们也可以定制出其他效果,比如不显示文字,不显示圆点,弧线线宽与圆环线宽一样,不使用渐变色,不需要动画,等等。

    98120

    Qt编写自定义控件3-速度仪表盘

    一、前言 速度仪表盘,写作之初的本意是用来展示当前测试的网速用的,三色圆环+数码管显示当前速度,Qt自带了数码管控件QLCDNumber,直接集成即可,同时还带有动画功能,其实也可以用在汽车+工业领域等...,展示汽车的当前速度和各种指标情况,比如生成领域的完成百分比等,控件采用纯painter绘制,自由拉伸不变形,背景透明的,贴上个背景图就会显得更漂亮。...二、实现的功能 1:可设置范围值,支持负数值 2:可设置精确度,最大支持小数点后3位 3:可设置大刻度数量/小刻度数量 4:可设置开始旋转角度/结束旋转角度 5:可设置是否启用动画效果以及动画效果每次移动的步长...6:可设置三色圆环占比例 7:自适应窗体拉伸,刻度尺和文字自动缩放 三、效果图 [在这里插入图片描述] 四、头文件代码 #ifndef GAUGESPEED_H #define GAUGESPEED_H...double animationStep; //动画显示时步长 int ringWidth; //圆环宽度 int ringStartPercent

    1.3K31

    微信小程序解决ios页面上推问题

    相信大家写原生小程序都遇到过一个问题,当输入框聚焦键盘弹起时,页面会自动上推,使得输入框刚好位于键盘之上,在安卓中推动的只是内容,但在ios中,推动的是整个页面,导致导航栏被推出屏幕外,如下:图片针对这个问题...,目前的解决方案是将自动上推改成手动上推,让我们自己来控制页面内容的滚动。...this.getScrollOffset().then((lastScrollTop) => { wx.pageScrollTo({ // 如果已经存在滚动,在此基础上继续滚...方案一键盘事件触发多次,可能每次获取到的高度和元素bottom不同,从而导致多次滚动,这里可以使用节流获取到第一次的数据即可大家根据自己的需求选择使用哪一种方案三、疑难杂症在一些特殊的场景下,还会有各种奇奇怪怪的问题...,再点击input触发键盘事件,input获取到的键盘高度是有完成那栏的,导致页面上推距离不准解决:不要使用原生的完成,自定义一个完成,键盘弹起时将他使用动画移动到键盘之上,这个时候记得在计算D区域的时候

    5.7K30

    【数据可视化】Echarts的高级功能

    在ECharts中,用户的任何操作,都可能会触发相应的事件。...在一个图表元素上相继触发mousedown和mouseup事件,才会触发click事件。两次click事件相继触发才会触发dblclick事件。...利用影响健康寿命的各类因素数据绘制圆环图,如图所示。 由图可知,在图中有以下动画效果。 (1)在高亮的扇区上显示tooltip。 (2)鼠标没有移入时,圆环图自动循环高亮各扇区。...在调用dispatchAction循环高亮圆环图的每个扇区的关键代码中主要通过dispatchAction({ type: ’ ’ })触发图表行为。...左图为完成自定义的数据加载动画后得到的双柱状图,其数据加载动画效果如图所示。 在Echarts 5.x版本中,动画类型只有一种。 有问题请指出,大家一起进步!!!

    50610

    iOS CALayer 简单介绍

    在创建uiview的时候,uiview的内部会自动创建一个层(calayer对象)通过uiview的layer属性可以访问这个层。...当uiview需要显示在屏幕上时,会调用drawrect 方法进行绘制,并将所有的内容绘制在自己的层上,绘制完毕之后,系统会将层拷贝到屏幕上,于是uiview就显示了。...实现类似于加载图的加载效果。...两种方式,一种是使用 n张图片去循环,这样的话对内存的开销比较大,不建议使用,第二种就是采用CALayer的相关属性  加上核心动画来实现:代码如下: //2.渐变转换为图形形成动画 CALayer...groupAnnimation.repeatCount = MAXFLOAT; [layer addAnimation:groupAnnimation forKey:@"groupAnnimation"];  下边附上以上代码的效果图:

    65720

    用初中数学知识撸一个canvas环形进度条

    效果图 先放个效果图,然后再说下具体实现过程,各位看官且听我慢慢道来。 安装与使用 源码地址[1],欢迎star和提issue。...从设计稿我们可以直观地看到,整个环形进度条的最外围是由进度圆点确定的,而进度圆点的圆心在圆环圆周上。...我们先画圆环,这时我们还要定义两个属性,分别是圆环线宽circleWidth和圆环颜色circleColor。...动画展示 静态的东西逼格自然是不够的,因此我们需要再搞点动画效果装装逼。 基础动画 我们先简单实现一个线性的动画效果。...其他效果 当然根据组件支持的属性,我们也可以定制出其他效果,比如不显示文字,不显示圆点,弧线线宽与圆环线宽一样,不使用渐变色,不需要动画,等等。

    58520
    领券