微信小程序:自定义柱状图

微信小程序:自定义柱状图,第1张

1

EChart在某些配置较低的手机上出现无法交互的情况,换成自定义控件解决了这个问题。

2

新建一个自定义组件,布局如下

wxml

根据官方文档的说法,最好使用canvas2d进行绘制。

3

js

通过SelectorQuery获取canvas对象,这里的in方法用于获取自定义组件中的节点。

node属性用于获取节点实例,即canvas对象,size用于获取节点尺寸,就是canvas的宽高。这里有一个坑,磨握通过节点获取到的画布宽高,仅仅是画布的宽高,想要在真机上正常显示,还需要获取手机的密度,并将画布的宽高乘以密度,canvasContext同样缩放屏幕密度倍数。

pixelRatio,官方说明为像素比,应该就是开发android时,1dp等于多少px。

4

绘制柱状图,其实并不复杂,统计图的要素就那么多。

首先是标题,如果需要标题的话,那么就要在绘制标题时,就需要指定标题的样式,然后预留出标题周围需要的边距。然后可以把绘制标题的方法抽取一个单独的方法。

坐标轴,确认坐标竖笑轴原点的位置,要考虑预留出坐标轴名称的位置,预留刻度名称的位置。

当获取到数据时,绘制跟数据有关的部分,也就是刷新方法。

如果需要动态刷新,js的canvas需要把原有的画布内容清空,于是要有一个clear方法。

5

提示条canvas的要覆盖在统计图canvas上,同理要根据屏幕密度对画布进行调整。同时初始化一组跟瞎纤庆统计图canvas同样的坐标系。

绑定屏幕点击事件bindtouchastart,点击屏幕时记录点击的位置,显示提示条。

6

当手指在屏幕上滑动时,监听事件bindtouchmove,根据滑动距离变化触发页面刷新,统计图canvas,提示条canvas根据需要,是否都需要刷新。

大致思路是这样, 源码 供参考。

对于图表这块毁扮的开发,使用一些流行的图表库可以大大提高我们的开发效率,目前较为流行的图表库大概有Echarts,Hcharts,AntV,他们都是大同小异,我印象比较深刻的是Hcharts是支持多坐标轴的,Echarts好像是不支持的,但是对于小程序的选择我们选择的是阿里的AntV-f2,因为他明确指出了适合小程序开发,而且AntV-f2除了不支持一些document,其他的大部分纤颂功能都是支持的,我们就没有再考虑其他的库,但是官方并没有太多关于小程序的具体使用文档,我们只能根据js的相关事例翻译成小程序的语法。

钉钉小程序开发工具: https://open-doc.dingtalk.com/microapp/kn6zg7/zunrdk#%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%BC%80%E5%8F%91%E8%80%85%E5%B7%A5%E5%85%B7

AntV - F2: https://antv.alipay.com/zh-cn/f2/3.x/demo/index.html

效果看着有点丑对不对......那我们就来实现一下设计师的效果图吧!具体功能:1.默认展示一个tooltip, 2.tooltip改变时展示对应x轴的数据,3.自定义tooltip

我们自定义一个默认的tooltip:, 就叫做def_item吧,当图表渲染完成设置def_item = {key: 100, value: 200},这里有个注意点,就是def_item的内毁余郑容不是随便定义的,这里我们先不做多说,后面会说明这个def_item的key值时如何设置的。

通过查找tooltip的Api我们会发现它有3个事件的回调,在钉钉小程序中我们只能通过props来传递tooltip的回调

优化后的效果

1、首先打开电脑,进入电脑旅塌桌面,找到浏览器。

2、其次在枯明浏览器中搜索微信官方没镇告小程序,点击进入。

3、最后在进入之后,找到小程序的设置,登录自己的小程序账号,点击进入,更改时间就可以了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12262350.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存