关于利用 achartengine 画 股票 分时线


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

    先来看看最终效果

                    关于利用 achartengine 画 股票 分时线

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

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

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

                    关于利用 achartengine 画 股票 分时线

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

            

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

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方法)

if (showLabels) {
    paint.setColor(mRenderer.getXLabelsColor());
    canvas.drawLine(xLabel - gap, bottom, xLabel - gap, bottom
        + mRenderer.getLabelsTextSize() / 3, paint);
    if (label < (Math.round(xLabels.get(0)) + TimeChart.HOURS * 2)) {
        drawText(canvas, format.format(new Date(label)), xLabel
        - gap, bottom + mRenderer.getLabelsTextSize()
        * 4 / 3 + mRenderer.getXLabelsPadding(), paint,
        mRenderer.getXLabelsAngle());
    } else if (label == (Math.round(xLabels.get(0)) + TimeChart.HOURS * 2)) {
        drawText(canvas, "11:30/13:00", xLabel - gap, bottom
        + mRenderer.getLabelsTextSize() * 4 / 3
        + mRenderer.getXLabelsPadding(), paint,
        mRenderer.getXLabelsAngle());
    } else {
        drawText(canvas, format.format(new Date(
        (long) (label + TimeChart.HOURS * 1.5))),
        xLabel - gap,
        bottom + mRenderer.getLabelsTextSize() * 4 / 3
        + mRenderer.getXLabelsPadding(), paint,
        mRenderer.getXLabelsAngle());
    }
}

                         关于利用 achartengine 画 股票 分时线


请标明转载地址:http://my.oschina.net/wuchao2877/blog/145311




你可能感兴趣的:(android,股票,stock,分时线)