关于利用 achartengine 画 股票 分时线

最近工作中需要开发  stock 的分时线, 用到了 achartengine 开源画图软件。

    先来看看最终效果

                    

    用过 achartengine 的都会发现TimeChart 有BUG,它的x轴 的时间 间距会不一致,你在折线图上的点和实际的

x轴时间 有时会对不起来, 解决的办法就是设置startIndex =9:30 的位置 

    另一个BUG 就是 TimeChart 的x轴 时间 连续性   ,11:30~13:00  这段时间的数据为空,会形成 下面的效果:

                    

        (这样的效果 很明显不是很美观,其实做为程序猿,觉得还不错啊,多有逻辑感,呵呵)

            

    怎么样去修改呢,有两种思路,计算 11:30~13:00多长距离  ,修改AbstractChart   的 drawPath方法,

1 float spaceNum = Math.abs(tempDrawPoints[0] - tempDrawPoints[2]);

判断spaceNum 是否大于180(正常每分钟的距离 为2 ,那11:30~13:00时间差为1.5h ,90m*2=180的距离)

不过这种方法涉及的东西比较多,在此不做讨论……(= =~希望有对此做研究的大家一起讨论下)


    另一种方法,就是 在返回的x轴数据上判断   x轴时间是否大于13:00 ,如果大于就减去1.5h  ,具体代码如下( 修改TimeChart  的drawXLabels方法)

01 if (showLabels) {
02     paint.setColor(mRenderer.getXLabelsColor());
03     canvas.drawLine(xLabel - gap, bottom, xLabel - gap, bottom
04         + mRenderer.getLabelsTextSize() / 3, paint);
05     if (label < (Math.round(xLabels.get(0)) + TimeChart.HOURS * 2)) {
06         drawText(canvas, format.format(new Date(label)), xLabel
07         - gap, bottom + mRenderer.getLabelsTextSize()
08         4 3 + mRenderer.getXLabelsPadding(), paint,
09         mRenderer.getXLabelsAngle());
10     else if (label == (Math.round(xLabels.get(0)) + TimeChart.HOURS * 2)) {
11         drawText(canvas, "11:30/13:00", xLabel - gap, bottom
12         + mRenderer.getLabelsTextSize() * 4 3
13         + mRenderer.getXLabelsPadding(), paint,
14         mRenderer.getXLabelsAngle());
15     else {
16         drawText(canvas, format.format(new Date(
17         (long) (label + TimeChart.HOURS * 1.5))),
18         xLabel - gap,
19         bottom + mRenderer.getLabelsTextSize() * 4 3
20         + mRenderer.getXLabelsPadding(), paint,
21         mRenderer.getXLabelsAngle());
22     }
23 }

                         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值