您的位置:首页 > 移动开发 > Android开发

关于利用 achartengine 画 股票 分时线

2014-11-11 09:17 141 查看
最近工作中需要开发 stock 的分时线, 用到了 achartengine 开源画图软件。

先来看看最终效果



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

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

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



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

怎么样去修改呢,有两种思路,计算 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());
}
}




请标明转载地址:http://my.oschina.net/wuchao2877/blog/145311
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息