小程序canvas适配android7,8

417 阅读1分钟

不知道你们有没有遇到过,公司要求在小程序中画仪表盘,刻度尺,还有环形进度,如下

加上echarts就是4个动画!!!!没见过在小程序中这么多动画。 其中刻度尺这个组件在测试过程中发现如果是android7,8版本的手机就画不出来,刻度数和刻度点都没有,但还是能滑动并且显示出数字。

项目是mpvue做的,修改bug过程中百度了方法, 有createCanvasContext的时候加一个this。 创建的ctx不能跟this挂钩,不能this.ctx这样。 在drawRuler()的时候加一个setTimeOut,延迟两秒 v-if来判断是否创建了这个canvas等等,都没有用。

后来以为是mpvue的坑,用了别人的原生刻度尺组件,发现也是有的,但是有时候会出现刻度画不完全,或者刻度重叠的问题,他的实现方式是先canvas画出来,然后导出成一个图片,再通过宽高来调整图片使他刚好适应你提供的容器宽高,这种方法固然好,但如果canvas画的太长,会出现绘制不完全或者绘制重叠那种情况,而且延迟绘制用户体验也很差。

再后来也是用了别人的css绘制的刻度尺组件,效果也很好,但我需要的是一个刻度值代表0.1的值,他实现的是一个刻度值代表1个值,他画的是刻度线,我画的是圆,所以也不太符合我的需求。

没得办法只能自己用css实现了,具体代码在git中,有用的话点个小星星呀 github.com/circlewang/…